我正在编写一个应用程序,通过每隔几秒钟轮询一次目录来监视新输入文件的目录。新文件通常可能有几兆字节,因此需要一些时间才能完全到达输入目录(例如:从远程共享复制)。
有没有一种简单的方法来检测文件当前是否正在被复制?理想情况下,任何方法都与平台和文件系统无关,但不同平台可能需要特定策略。
我已经考虑过将两个目录列表分开几秒钟并比较文件大小,但这引入了时间/可靠性权衡,除非别无选择,否则我的上级并不满意。
作为背景,该应用程序被编写为一组 Matlab M 文件,所以恐怕没有 JRE/CLR 技巧......
编辑:文件通过直接移动/复制操作直接到达输入,无论是从网络驱动器还是从本地文件系统上的另一个位置。此复制操作可能由人类用户而不是其他应用程序启动。
因此,很难让文件提供者负责添加控制文件或使用中间暂存区......
结论:似乎没有简单的方法可以做到这一点,所以我已经决定采用带大括号的方法 - 如果满足以下条件,则文件已准备好进行处理:
- 它的大小在一定时间内不会改变,并且
- 可以以只读模式打开文件(某些复制过程会锁定文件)。
感谢大家的回复!