43

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

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

我知道 File.Open 有所有的花里胡哨,但是是否有一种“中间”方法不涉及弄乱缓冲区和字符数组?

4

2 回答 2

65

我想你只想要以下内容:

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 以读取共享模式打开(请参阅FileShare.NET 中的枚举)。我没有测试过,所以我不能保证 Excel 会这样做,尽管我希望它会这样做。

于 2009-09-07T12:26:59.167 回答
0

如果你想指定文件共享标志以打开正在使用的文件,你会被 File.Open() 卡住。

于 2009-09-07T12:24:33.883 回答