我有一个要求,将文件写入服务器。另一个应用程序有一个计划作业,它以特定的时间间隔读取文件。在我的写入完成之前,该文件不应该可读。我尝试过使用
File.isReadable(false)
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。如果我仍在写入,调度程序将从文件中获取不完整的数据。
有什么解决方案吗?
写入不同的文件名,然后在写入完成后将文件重命名为调度程序期望的名称。如果您在 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)
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |