我意识到FileSystemWatcher不提供Move事件,而是为同一个文件生成单独的Delete和Create事件.(FilesystemWatcher正在观察源文件夹和目标文件夹).
但是,我们如何区分真正的文件移动和一些文件的随机创建,该文件恰好与最近删除的文件同名?
FileSystemEventArgs类的某种属性,例如"AssociatedDeleteFile",如果它是移动的结果,则分配已删除的文件路径,否则为NULL,这将是很好的.但当然这不存在.
我也理解FileSystemWatcher在基本的文件系统级别运行,因此"移动"的概念可能仅对更高级别的应用程序有意义.但如果是这种情况,人们会建议在我的应用程序中使用什么样的算法来处理这种情况?
根据反馈更新:
FileSystemWatcher类似乎看到将文件移动为2个不同的事件,删除原始文件,然后在新位置创建.
不幸的是,这些事件之间没有提供"链接",因此如何区分文件移动和普通的删除或创建并不明显.在操作系统级别,移动被特别处理,您可以几乎立即移动说1GB文件.
一些答案建议在文件上使用散列来在事件之间可靠地识别它们,我将合理地采用这种方法.但如果有人知道如何更简单地发现一个动作,请留下答案.
有没有人知道如何使用java监控文件夹?或者任何人都可以给我一个指示,我怎么能开始这个.这是我的想法.
启动一个线程来扫描文件夹更改,这可能是创建,删除,更新此文件夹中的文件或其他事情发生,如上次更新.
但在这种情况下,你必须控制线程循环.如果这个线程循环不能很好地控制,那么它将浪费cpu并可能导致致命的问题.
或者,是否有任何框架或一些演示代码来执行此操作?希望我们能找到更好的方法来做到这一点.非常感谢.