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

时间:2009-09-07 12:22:48

标签: c# filestream text-files

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

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

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

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

2 个答案:

答案 0 :(得分:56)

我想你只想要以下内容:

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

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

答案 1 :(得分:0)

如果要指定文件共享标志以打开正在使用的文件,则会遇到File.Open()。