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

时间:2011-12-06 08:34:49

标签: c#

  

可能重复:
  FileStream with locked file

我正在尝试为我的大学项目构建AV并且在扫描期间我得到异常 - 访问被拒绝,文件被另一个进程使用,因此无法扫描文件。而且当它在Windows资源管理器中打开时,同样的事情发生。我也使用Fileshare.ReadWrite但没有用。它主要是C:驱动文件。

3 个答案:

答案 0 :(得分:2)

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

如果您在Linux或其他Posix系统上编码,则不会出现此问题:多个进程可以同时访问同一个文件(您可以使用锁定来防止这种情况)。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以尝试使用Stream:

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

请不要忘记最后处理它,或将其包含在使用声明