该进程无法访问该文件,因为该文件正由另一个进程

时间:2015-11-02 12:58:45

标签: .net

我的应用使用File.OpenRead来读取csv文件。

这种方法很好,除非csv文件也在Excel中打开,在这种情况下我收到错误

  

该进程无法访问该文件' C:\ test.csv'因为它正被另一个进程使用。

发生了什么? Excel阻止其他应用程序写入文件(以防止冲突)是有道理的,但为什么它会阻止其他应用程序读取它?有什么方法可以解决它吗?

1 个答案:

答案 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();
        }
    }