File.Open抛出IOException,但文件永远不会打开/显示

问题描述 投票:0回答:1

我在代码中进行了一个简单的测试,如下所示:

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

path是上面声明的字符串。按下按钮时调用此例程,并且第一次调用它时,它“正常工作”(引用,因为虽然它不会抛出异常,但文件永远不会打开/显示)。第二次按下时,抛出以下异常:

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

但是,该文件实际上从未打开过。我用任务管理器监视它,并且没有展示该文件的任何实例。

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

有谁能够帮我?这似乎是我正在做的一个基本错误,但我找不到它。

UPDATE

LasseVågsætherKarlsen提供了正确的答案,指出我的错误实际上是关于概念,而不是代码。谢谢!

c# file-io ioexception
1个回答
2
投票

我想你误解了File.Open的作用。

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

在该操作结束时,你必须关闭它,这是using会为你做的。

但是,我猜这不是你想要做的。你一直提到文件没有打开,你正在使用任务管理器来查找文件,而不是看到它。

你想要Process.Start。您正在尝试打开另一个可执行文件,例如notepad.exe,或者您正在尝试打开文档,例如readme.txt,这就是为什么您没有使用调用该方法的结果,以及您使用任务管理器的原因寻找它。

因此,假设您仍想捕获异常,那么您应该这样做:

try
{
    Process.Start(path);
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}
© www.soinside.com 2019 - 2024. All rights reserved.