如何在C#中检查文件是否正在被使用?

4

我如何检查我正在处理的Excel文件(操纵它的数据,删除它或覆盖它)是否被其他程序使用?如何从同一个程序中释放它?

请用C#指导我。

1个回答

4

尝试以“写入”标志打开文件。如果失败,则表示该文件被其他进程“占用”。

FileStream fileStream = null;

try
{
    fileStream =
        new FileStream(@"c:\file.txt", FileMode.Open, FileAccess.Write);
}
catch (UnauthorizedAccessException e)
{
    // The access requested is not permitted by the operating system
    // for the specified path, such as when access is Write or ReadWrite
    // and the file or directory is set for read-only access. 
}
finally
{
    if (fileStream != null)
        fileStream.Close ();
}

附注:刚发现有一个非常相似的问题,基本上答案也是一样的:

C#:如何检查文件是否正在使用中?


1
那你的意思是通过捕获异常来实现吗?但是有没有其他更干净的方式来实现,而不是通过异常呢? - pencilCake
很棒,它对我有效,但是我想知道是否有其他方法来执行这个...好的,谢谢。但是在我的代码中,我使用了IOException而不是UnauthorizedAccessException异常。 - Red Swan
是的,有例外情况最好检查一下在不同场景中抛出哪一个。我刚刚阅读了MSDN的描述,并选择了适合此示例的内容。 - user151323

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接