我有一项工作将在目录 A 中的 csv 文件中写入大量数据。然后有另一项工作将在一段时间后从目录 A 读取文件。将要写入的进程每天运行一次。该过程将每天多次读取运行。
我将首先将文件写入一个临时文件夹,例如 dir_timestamp。完成后,该文件将移动到目录。现在的问题是
如果在将文件移动到目录时,另一个进程来尝试读取它怎么办?它的阅读方式将是
File dir = new File (path_to_dir);
File[] files = dir.listFiles();
for (File f : files)
{
//do stuff
}
- 部分写入的文件对进程 2 可见吗?
- 如果是,那么如果我将文件复制到具有某个名称而没有任何扩展名的目录并在读取必须有一些扩展名(可能是 .csv)时添加一个过滤器会不会很好?复制后,我可以用扩展名重命名它吗?
- 即使我进行重命名,Java
File.Rename()
实际上也用于移动文件。底层java会在重命名时从头开始复制文件还是什么?