我的应用使用File.OpenRead
来读取csv文件。
这种方法很好,除非csv文件也在Excel中打开,在这种情况下我收到错误
该进程无法访问该文件' C:\ test.csv'因为它正被另一个进程使用。
发生了什么? Excel阻止其他应用程序写入文件(以防止冲突)是有道理的,但为什么它会阻止其他应用程序读取它?有什么方法可以解决它吗?
答案 0 :(得分:4)
嗯,这不会回答为什么?,但解决了如何的问题。还有另一种读取锁定文件的方法,如下所示(关键是FileShare.ReadWrite
):
http://coding.infoconex.com/post/2009/04/21/How-do-I-open-a-file-that-is-in-use-in-C
using(FileStream fileStream = new FileStream(
"logs/myapp.log",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
using(StreamReader streamReader = new StreamReader(fileStream))
{
this.textBoxLogs.Text = streamReader.ReadToEnd();
}
}