读取由另一个应用程序锁定的文本文件的最简单方法

Ben*_*jol 36 c# filestream text-files

我一直在使用File.ReadAllText来获取一些csv,但每次忘记在Excel中关闭文件时,应用程序都会抛出异常,因为它无法访问该文件.

(对我来说似乎很疯狂,我的意思是ReadAllText中的READ似乎很清楚)

我知道File.Open有所有的花里胡哨,但有没有'中间'方法,不涉及到缓冲区和字符串数组?

是的,我很懒,所以投我一票,先给我答案:)

Nol*_*rin 58

我想你只想要以下内容:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var textReader = new StreamReader(fileStream))
{
    var content = textReader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

FileAccess.Read参数非常重要,表示您只想读取文件.当然,即使这样做,该文件必须由Excel以读共享模式打开(参见FileShare.NET中的枚举).我没有测试过,所以我不能保证Excel会这样做,尽管我希望它能做到.

  • @Noldorin:有关信息,我试着尝试它,你必须包含FileShare.ReadWrite参数才能使它与Excel一起使用. (4认同)