如何读取已被其他进程使用的文件

本文关键字:进程 其他 文件 何读取 读取 | 更新日期: 2023-09-27 18:16:49

可能重复:
带有锁定文件的FileStream

我正试图为我的大学项目构建一个AV,在扫描过程中,我遇到了异常访问被拒绝,文件被另一个进程使用,因此无法扫描文件。当它在windows资源管理器中打开时,同样的事情也会发生。我还使用了Fileshare.ReadWrite,但没有用。它与C:驱动器文件配合得很好。

如何读取已被其他进程使用的文件

它可能与您的操作系统(可能是Windows(有关,而不是与您使用的特定语言(C#(有关。如果操作系统内核需要独占访问,那么应该很难或不可能避免。

如果你在Linux或其他Posix系统上进行编码,你就不会有这个问题:几个进程可以同时访问同一个文件(你可以使用锁定来防止这种情况发生(。

只使用FileShare.Read,而不是ReadWrite。您还必须接受会有一些文件不可扫描(即页面文件(,因此您应该在读取代码周围添加一个异常处理程序,并在读取文件时忽略(或报告(异常。

您可以尝试使用流:

Stream stream = new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.Read)

只是不要忘记最后处理它,或者使用语句

将它括起来