拒绝对文件的读取访问,直到写入完成 - java

sad*_*dhu 2 java file-io

我有一个要求,将文件写入服务器。另一个应用程序有一个计划作业,它以特定的时间间隔读取文件。在我的写入完成之前,该文件不应该可读。我尝试过使用

File.isReadable(false)
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。如果我仍在写入,调度程序将从文件中获取不完整的数据。

有什么解决方案吗?

Ian*_*rts 5

写入不同的文件名,然后在写入完成后将文件重命名为调度程序期望的名称。如果您在 Linux 或类似系统上运行,则同一文件系统中的文件重命名是原子的。

File tempFile = new File("/path/to/file.tmp");
// write to tempFile
tempFile.renameTo(new File("/path/to/file"));
Run Code Online (Sandbox Code Playgroud)