ディレクトリAのcsvファイルに大量のデータを書き込むジョブがあります。その後、しばらくしてディレクトリAからファイルを読み取る別のジョブがあります。書き込みを行うプロセスは 1 日 1 回実行されます。プロセスは 1 日に複数回実行を読み取ります。
まず、dir_timestamp などの一時フォルダーにファイルを書き込みます。完了すると、そのファイルはディレクトリに移動されます。今問題は
ファイルがディレクトリに移動されている間に、別のプロセスが来てそれを読み取ろうとした場合はどうなるでしょうか? それがそれを読む方法は
File dir = new File (path_to_dir);
File[] files = dir.listFiles();
for (File f : files)
{
//do stuff
}
- 部分的に書き込まれたファイルはプロセス 2 に表示されますか?
- はいの場合、ファイルを拡張子なしの名前のディレクトリにコピーし、拡張子が必要であることを読みながらフィルターを追加しても問題ありませんか (おそらく .csv) ? コピーしたら、拡張子を付けて名前を変更できますか?
File.Rename()
名前の変更を行っても、実際にはファイルの移動にもJavaが使用されます。基礎となるJavaは、名前の変更中にファイルを最初からコピーしますか?