【发布时间】:2010-11-26 05:24:58
【问题描述】:
我一直在使用File.ReadAllText() 打开一个 CSV 文件,但每次我忘记在 Excel 中关闭文件时,应用程序都会抛出异常,因为它无法访问该文件。
(对我来说似乎很疯狂,我的意思是 ReadAllText 中的 READ 似乎很清楚)
我知道 File.Open 有所有花里胡哨的功能,但有没有不涉及缓冲区和字符数组的“中间”方法?
【问题讨论】:
标签: c# filestream text-files
我一直在使用File.ReadAllText() 打开一个 CSV 文件,但每次我忘记在 Excel 中关闭文件时,应用程序都会抛出异常,因为它无法访问该文件。
(对我来说似乎很疯狂,我的意思是 ReadAllText 中的 READ 似乎很清楚)
我知道 File.Open 有所有花里胡哨的功能,但有没有不涉及缓冲区和字符数组的“中间”方法?
【问题讨论】:
标签: c# filestream text-files
我认为您只需要以下内容:
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 可以做到这一点,尽管我希望它会做到。
【讨论】:
如果您想指定文件共享标志以打开正在使用的文件,那么您将无法使用 File.Open()。
【讨论】: