[Qt] ファイルを定期的にバックアップするためのアイデアを提供します

1. 需要

突然の停電によるデータの損失を防ぐために、文書を開いたときに定期的に自動バックアップが行われます。

2. プロセス

2.1 ファイル構造

  1. ターゲットファイル ターゲット。
  2. バックアップ ファイル Backup_X。

2.2 オープニングフェーズ

  1. ターゲット ファイルが存在するかどうかを確認します。存在しない場合は、2 番目のステップに進んで新しいターゲット ファイルを作成します。存在する場合は、3 番目のステップに進んで続行します。
  2. ターゲット ファイルを作成し、ステップ 3 に進みます。
  3. バックアップ ファイル 1 が存在するかどうかを確認します。存在する場合は、停電が発生して保存されなかったことを意味します。ファイルを復元して 4 番目の手順に進むかどうかを尋ねるメッセージが表示されます。存在しない場合は、新しいバックアップ ファイル 1 を作成し、対象ファイルのデータをバックアップ ファイル 1 に書き込み、手順 5 に進みます。
  4. 復元すると、バックアップ ファイル 1 の内容がターゲット ファイルに上書きされ、その後定期的にバックアップ ファイル 1 にレコードが書き込まれます。復元されない場合は、ターゲット ファイルの内容がバックアップ ファイル 1 に上書きされ、その後定期的にレコードがバックアップ ファイル 1 に書き込まれ、手順 5 に進みます。
  5. このとき、ターゲットファイルとバックアップファイル 1 の初期状態を処理してから、スケジュールされたバックアップ状態に入る必要があります。

2.3 スケジュールされたバックアップ段階

  1. タイミングが来ると、対象ファイルのデータが分割されてバックアップファイル1に保存されます。

2.4 終了フェーズ

  1. 対象ファイル操作を終了する前に、対象ファイルのデータを保存してください。
  2. バックアップ ファイルを閉じて削除します。
  3. アプリケーションを閉じます。

3. 機能

3.1存在する

ファイルが存在するかどうかを確認してください。

この関数は次のように使用されます。

uint32_t NewFileOpen(char* name)
{
    QFile file(name);
    if(file.exists())
    {
        func1();
    }
    else
    {
        func2();
    }
}

3.2追加

スプライスされたバックアップ ファイルのファイル名。

この関数は次のように使用されます。

        QString BackupFileName(name);
        BackupFileName.append("-backup");
        QFile BackupFile(BackupFileName);

3.3名前の変更

ファイル名を変更します。

この関数は次のように使用されます。

BackupFile.rename(BackupFileName);

3.4開く

ファイルが存在しない場合は、ファイルが開かれて作成されます。

この関数は次のように使用されます。

file.open(QIODevice::ReadWrite|QIODevice::Text);

3.5閉じる

ファイルが閉じられています。

この関数は次のように使用されます。

file.close();

4. まとめ

スケジュールされたファイルをバックアップするというアイデアは Microsoft Word から生まれました。私はそれを簡単に使用できるようにモジュールにカプセル化したいと考えています。ソース コードはまだ入手できず、デバッグ中です。

おすすめ

転載: blog.csdn.net/qq_34217861/article/details/126091984
おすすめ