带有锁定文件的文件流



我想知道是否可以将只读文件流发送到锁定的文件?现在,当我尝试读取锁定的文件时,我会收到异常。

using (FileStream stream = new FileStream("path", FileMode.Open))

谢谢!

你应该尝试另一个构造函数。它们记录在 MSDN 中。

这个看起来像一个赌注:

FileStream Constructor (String, FileMode, FileAccess, FileShare)

MSDN 链接

文件访问

一个常量,它确定文件流对象如何访问文件。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果路径指定了磁盘文件,则 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);

您可以简单地解锁文件并在文件之后读取文件。只需使用句柄.exe 来自 系统内部 ,或使用命令行选项解锁。他们都可以解锁文件,并且您可以轻松地从程序中执行它们,无需离开您的程序。(但不要将它们用于Windows SAM文件,它不适用于SAM ;))祝你好运!

相关内容

  • 没有找到相关文章

最新更新