サーバー A からサーバー B にダンプするディレクトリ ( DIR_A ) があり、これには数週間かかると予想されます。DIR_Aには通常のツリー構造があります。つまり、ディレクトリにはサブフォルダやファイルなどがあります。
目的: DIR_Aがサーバー B にダンプされているため、DIR_Aを調べて その中の特定のファイルを検索する必要があります (サーバー A は送信されるすべてのファイルの名前を変更するため、各ファイルの正確な名前はわかりません)。DIR_A内のいくつかのファイルを処理するのに何週間も待つことができません。そのため、サーバー B でファイルを受信したら、いくつかのファイルの操作を開始したいと考えています。
概要: サーバー AがDIR_Aをサーバー B に送信します。数週間かかると予想されます。アップロードが完了する前に、B でファイルの処理を開始する必要があります。
試行案: DIR_A の内容を一覧表示するプログラムを作成することにしました。DIR_Aのフォルダーとサブフォルダー内にファイルが存在するかどうかをた。DIR_A内のファイルの EOF を探すかもしれないと思いた。存在しない場合、ファイルはまだ完全にアップロードされていません。EOF が見つかるまで待つ必要があります。そのため、ループを続け、ファイルのサイズを計算し、EOF が存在するかどうかを確認します。その場合は、そのファイルの処理を開始します。
上記をシミュレートするために、テキストファイルに書き込むプログラムを作成して実行し、完了を待たずに途中で停止することにしました。以下のプログラムを使用して、EOF が見つかるかどうかを判断しようとしました。テキスト ファイルへの書き込みプログラムを突然終了したため、eof が存在しないため、出力 " EOF FOUND
" に到達しないはずであると想定しました。これに到達したので、私は間違っています。また、feof() と fseek() も試しました。
std::ifstream file(name_of_file.c_str, std::ios::binary);
//go to the end of the file to determine eof
char character;
file.seekg(0, ios::end);
while(!file.eof()){
file.read(character, sizeof(char));
}
file.close();
std::cout << "EOF FOUND" << std::endl
ファイルが完全に書き込まれたかどうかを判断するアイデアを誰か提供できますか?