如何使用 StreamReader 打开 FILE_SHARE_READ , FILE_SHARE_WRITE , FILE_SHARE_DELETE

同样的问题,略有扩大

如何打开StreamReader,以便可以读取带有共享选项的编码文本文件,以便另一个进程可以读取该文件?

如何打开StreamReader,以便可以读取带有共享选项的编码文本文件,以便其他进程可以在读取文件时修改该文件?

如何打开StreamReader,以便可以读取带有共享选项的编码文本文件,以便其他进程可以在读取文件时删除该文件?

同样的问题,稍微扩大一点

.NET Framework类库中有一个名为StreamReader的类。它是唯一设计用于读取“文本” 的类,这就是为什么它派生自抽象基础TextReader类的原因。 TextReader/StreamReader允许您指定尝试打开的文件所使用的编码,并且可以为您解码该文件,并返回文本的Strings

一旦我打开了带有StreamReader的文件:

var sr = new StreamReader(path);

该文件被锁定,其他进程无法修改或删除该文件。我需要的是 FileStream 类的 FileShare 枚举的等效项:
  • :拒绝共享当前文件。任何通过该过程或其他过程打开文件的请求都将失败,直到关闭该文件。
  • 已读“:允许随后打开文件进行读取。如果未指定此标志,则打开文件以进行读取的任何请求(通过此过程或其他过程)都将失败,直到关闭文件为止。指定此标志后,可能仍需要其他权限才能访问该文件。
  • 写入:允许随后打开文件进行写入。如果未指定此标志,则打开该文件以进行写入的任何请求(通过此过程或另一个过程)都将失败,直到关闭该文件为止。但是,即使指定了此标志,访问文件仍可能需要其他权限。
  • ReadWrite :允许随后打开文件进行读取或写入。如果未指定此标志,则打开文件以进行读取或写入的任何请求(通过此过程或其他过程)都将失败,直到关闭文件为止。但是,即使指定了此标志,访问文件仍可能需要其他权限。
  • 删除:允许随后删除文件。

  • 除此之外,出于明显的原因,我不能使用FileStream-必须使用StreamReader

    如何使用StreamReader打开FileShare.ReadWrite | FileShare.Delete

    最佳答案

    可以带流的StreamReader has a constructor。因此,不要使用带有字符串路径的构造函数,而是先使用所需的选项创建FileStream,然后将该FileStream传递给StreamReader构造函数。

    10-07 19:39
    查看更多