【发布时间】:2016-08-31 15:50:16
【问题描述】:
在使用FileSystemWatcher.OnDeleted 事件时,是否可以在文件被删除之前访问它?
我在其元数据中存储了有关文档本身的一些数据,并且在删除之前我需要该信息。
如果可能的话,任何想法如何在有或没有FileSystemWatcher 的情况下完成此任务?
更新://
我意识到将数据存储在文件中是不好的,因为删除文件后我无法访问它。
解决方案:重写我的应用程序以将数据存储在本地数据库(sqlite/xml 或类似的东西)中,因为我在创建/重命名/更新文件时获得了完整的路径和名称/deleted 更新文件的数据库记录会更容易。
感谢大家的意见和建议!
【问题讨论】:
-
我几乎想说不,你不能,因为一旦文件被删除,事件就会触发。我不相信 FSW 可以在事件完成之前知道该事件,因为这意味着甚至需要触发和捕获预删除,然后允许您在文件上创建锁定。
-
我认为仅使用
FileSystemWatcher是不可能的。我不确定 Windows 是否允许使用较低级别的挂钩(尽管我对此表示怀疑。) -
您将从事件处理程序中获得全名。使用它来恢复文件、使其不可见、读取和删除文件。 hackish 并且不是万无一失的,但仍然有些东西:stackoverflow.com/questions/2837307/…
-
@nawfal 那行不通。如果您尝试在事件处理程序中访问该文件,您将收到
FileNotFoundException。 -
@GETah 是的,这就是为什么我要他从回收站恢复文件,读取它然后再次删除。他肯定会从事件处理程序中获得文件的名称和相关属性!只是他无法访问文件本身
标签: c# windows .net-4.0 filesystemwatcher