【问题标题】:How To Read a File that Already used by another Process [duplicate]如何读取已被另一个进程使用的文件[重复]
【发布时间】:2011-12-06 08:34:49
【问题描述】:

可能重复:
FileStream with locked file

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

【问题讨论】:

标签: c#


【解决方案1】:

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

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

【讨论】:

  • 多个进程可以访问 Windows 上的同一个文件。并且文件锁定也可以在 Windows 上使用。
  • 如何..我可以访问sevral进程..??
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可以尝试使用 Stream:

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

    只是别忘了把它放在最后,或者放在 using 语句中

    【讨论】:

    • 我已经在使用流并尝试了 FileShare.Read 和 Fileshare.ReadWrite
    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多