有没有办法从锁定的文件中读取数据?

Ars*_*ray 4 c# io file-io file

这就是我的想法:

        var file = @"myfile";
        File.Open(file,
                  FileMode.Open, FileAccess.ReadWrite, FileShare.None);

        using (StreamReader rdr = new StreamReader(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)))
        {
            rdr.ReadToEnd();
        }
        var t = File.ReadAllBytes(file);
Run Code Online (Sandbox Code Playgroud)

Neigther File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)File.ReadAllBytes不能读取文件数据.

从我以前的旧c ++和winapi时代开始,我确实记得,如果你有备份权限,曾经有一种很好的方法来读取锁定的文件,但我不知道如何在c#中获取和使用它们.

任何人都可以提供一个关于如何在文件被锁定后读取文件的示例吗?

Dan*_*lba 6

好吧,如果文件完全锁定(不共享),您将无法阅读它.如果打开文件以共享读取,您将能够使用非侵入式方法读取:

string fileName = @"myfile";
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (StreamReader fileReader = new StreamReader(fileStream ))
{
    while (!fileReader .EndOfStream)
    {
        string line = fileReader .ReadLine();
        // Your code here
    }
}
Run Code Online (Sandbox Code Playgroud)