小编典典

打开文件只读

c#

当前,这是我打开文件以读取它的方式:

 using (TextReader reader = new StreamReader(Path.Combine(client._WorkLogFileLoc, "dump.txt")))
{
    //do stuff
}

如何以ReadOnly模式打开文件,以便如果另一个进程同时打开了文件,我的程序仍可以读取它。


阅读 244

收藏
2020-05-19

共1个答案

小编典典

典型的问题是其他进程打开了要写入的文件。所有标准的File方法和StreamReader构造函数都使用FileShare.Read打开文件。那行不通,拒绝写共享。您不能拒绝写入,首先是其他过程,并且具有写访问权。因此,您将被拒绝访问。

您必须使用FileShare.ReadWrite,如下所示:

var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
using (var sr = new StreamReader(fs))
{
    // etc...
}

当心您仍然会遇到棘手的问题,您正在读取一个半写的文件。另一个过程会在随机的时间点将数据刷新到文件中,您很可能只读取了一半的文本。YMMV。

2020-05-19