如何在ShareDenyWrite模式下打开StreamReader?
如何使用FILE_SHARE_READ
, FILE_SHARE_WRITE
, FILE_SHARE_DELETE
打开StreamReader
?
同样的问题,略有扩展
如何打开StreamReader
以便我可以读取带有共享选项的编码文本文件,以便其他进程可以读取该文件?
如何打开StreamReader
以便我可以读取带有共享选项的编码文本文件,以便其他进程可以在我阅读时修改该文件?
我如何打开StreamReader
以便我可以读取带有共享选项的编码文本文件,以便在我阅读时另一个进程可以删除该文件?
同样的问题,稍微扩大一点
在.NET Framework类库中,有一个名为StreamReader
的类。 它是唯一一个用于读取“text”的类 ,这就是为什么它来自抽象基类TextReader
类。 TextReader/StreamReader
允许您指定您尝试打开的文件所使用的编码,并可以为您解码文件,返回文本Strings
。
一旦我用StreamReader
打开了一个文件:
var sr = new StreamReader(path);
文件被锁定,其他进程无法修改或删除该文件。 我需要的是相当于FileStream
类的FileShare
枚举:
- 无 :拒绝共享当前文件。 在文件关闭之前,任何打开文件的请求(通过此进程或其他进程)都将失败。
- 读取 “:允许随后打开文件进行读取。如果未指定此标志,则打开文件进行读取(通过此进程或其他进程)的任何请求都将失败,直到文件关闭。但是,即使此标志为如果指定,则可能仍需要其他权限才能访问该文件。
- 写入 :允许随后打开文件进行写入。 如果未指定此标志,则在文件关闭之前,任何打开文件进行写入(通过此进程或其他进程)的请求都将失败。 但是,即使指定了此标志,仍可能需要其他权限才能访问该文件。
- ReadWrite :允许随后打开文件进行读写。 如果未指定此标志,则在文件关闭之前,任何打开文件以进行读取或写入(通过此进程或其他进程)的请求都将失败。 但是,即使指定了此标志,仍可能需要其他权限才能访问该文件。
- 删除 :允许后续删除文件。
除此之外,由于显而易见的原因,我无法使用FileStream
– 必须使用StreamReader
。
如何使用FileShare.ReadWrite | FileShare.Delete
打开StreamReader
FileShare.ReadWrite | FileShare.Delete
?
StreamReader
有一个可以获取流的构造函数 。 因此,不使用采用字符串路径的构造函数,而是首先使用所需的选项创建FileStream
,然后将该FileStream
传递给StreamReader
构造函数。
如何使用FileShare.ReadWrite打开StreamReader FileShare.Delete?
当您解决了Stream的问题后,Reader很简单:
var fs = new FileStream(fileName, FileMode.Open, FileShare.ReadWrite|FileShare.Delete); var sr = new StreamReader(fs);
当然,它应该包含在using() { }
块中。