File.Open引发IOException,但文件从未打开/显示

时间:2019-04-05 12:00:18

标签: c# file-io ioexception

我正在用代码做一个简单的测试,如下所示:

try
{
    File.Open(path);
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

path是上面声明的字符串。该例程在按下按钮时被调用,并且在第一次被调用时,它将“正常工作”(用引号引起来,因为尽管它不会引发异常,但从不打开/显示文件)。第二次按下时,将引发以下异常:

  

System.IO.IOException:该进程无法访问文件,因为它正在被另一个进程使用。

但是,该文件实际上从未打开过。我使用任务管理器对其进行监视,并且从未显示过该文件的实例。

我尝试使用using (File.Open(path)) {},但没有成功。

有人可以帮助我吗?这似乎是我正在做的一个基本错误,但我找不到它。

更新

拉瑟·沃格瑟·卡尔森(LasseVågsætherKarlsen)提供了正确的答案,并指出我的错误实际上与概念有关,而不是代码。谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您误解了eol的作用。

此方法将打开文件以供程序读取 。换句话说,该方法将返回一个for /F对象,您可以使用该对象读取和写入该文件。

该操作结束时,您必须将其关闭,这就是File.Open会为您执行的操作。

但是,我猜测这不是您想要执行的操作。您经常提到该文件无法打开,并且您正在使用任务管理器来查找该文件,而不是看到它。

您想要Stream代替。您试图打开另一个可执行文件,例如using,或者试图打开一个文档,例如Process.Start,这就是为什么您不使用调用该方法的结果的原因,并且为什么要使用任务管理器来查找它。

因此,假设您仍然想捕获异常,这就是您应该做的:

notepad.exe