java - 如何使用Java测试文件是否为 "complete"(完全编写)

标签 java

假设您有一个外部进程将文件写入某个目录,并且您有一个单独的进程定期尝试从该目录读取文件。要避免的问题是读取另一个进程当前正在写出的文件,因此它是不完整的。目前,读取的进程使用最小文件年龄计时器检查,因此它会忽略所有文件,除非它们的最后修改日期超过 XX 秒。

我想知道是否有更清洁的方法来解决这个问题。如果文件类型未知(可能是多种不同的格式),是否有一些可靠的方法来检查文件头中应该在文件中的字节数,与文件中当前的字节数以确认它们匹配?

感谢您的任何想法或想法!

最佳答案

我过去这样做的方式是写入文件的过程写入“临时”文件,然后在完成文件写入后将文件移动到读取位置。

所以写入过程将写入info.txt.tmp。完成后,它将文件重命名为 info.txt。然后读取过程只需要检查 info.txt 的存在 - 它知道如果存在,它已经被完整地写入。

或者,您可以让写入过程将 info.txt 写入不同的目录,然后如果您不喜欢使用奇怪的文件扩展名,则将其移至读取目录。

关于java - 如何使用Java测试文件是否为 "complete"(完全编写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029365/

相关文章:

java - 如何删除 Dropbox 文件?

java - Jackson Mapper 返回 null 并带有 Spring 休息

java - 如何使用监听器捕获所有运动事件

Java 增强型 For 循环 : Referenced Collection Not Changed

java - webView.ontouch和button.onclick之间的冲突

java - 为 RTS 游戏实现多人游戏

java - Collat​​or 无法在我的 Mac 上运行

java - 这段代码应该创建一个 JFrame 并在其上绘制......但它没有

java - AWS 高级运行状况报告显示内存警告 - 是我的 Java 内存设置造成的吗?

java - 如何声明 scala 方法以便可以使用可变参数样式从 Java 调用它