FileStream文件已锁定

| 我想知道是否可以将只读FileStream获取到锁定文件吗? 现在,当我尝试读取锁定的文件时出现异常。
using (FileStream stream = new FileStream(\"path\", FileMode.Open))
谢谢!     
已邀请:
您应该尝试其他构造函数。它们记录在MSDN中。 这看起来像一个赌注:
FileStream Constructor (String, FileMode, FileAccess, FileShare)
MSDN链接 文件存取   一个常数,该常数确定FileStream对象可以如何访问文件。这将获取FileStream对象的CanRead和CanWrite属性。如果path指定磁盘文件,则CanSeek为true。 文件共享   一个常数,用于确定进程将如何共享文件。     
using (FileStream stream = new FileStream(\"path\", FileMode.Open))
这将使用FileShare参数FileShare.Read的默认值。拒绝任何进程写入文件。如果另一个进程正在写入文件,那将无法正常工作,您无法拒绝已获得的权利。 您必须指定FileShare.ReadWrite。如果其他进程使用FileShare.None,那可能仍然不起作用,没有解决方法。请注意,获取对正在写入的文件的读取访问权限很麻烦,您没有可靠的文件结尾指示。文件中的最后一条记录或行可能仅被部分写入。     
我使用了以下可行的方法,但是应谨慎使用,因为在您用其他进程打开文件时可以对其进行修改。
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read,FileShare.ReadWrite);
    
您可以简单地解锁文件并读取文件。 只需使用Sysinternals的Handle.exe或带有命令行选项的Unlocker。 它们都可以解锁文件,并且您可以轻松地从程序中执行它们, 无需离开程序。 (但不要将它们用于Windows SAM文件,它不适用于SAM;)) 祝好运 !     

要回复问题请先登录注册