即使文件存在,Process.start也会找不到文件

时间:2016-03-17 15:01:38

标签: c#

我使用以下代码打开一个任意文件,其中包含系统上安装的任意应用程序:

if (File.Exists(_document.DocumentFullPath))
{
    Process.Start(_document.DocumentFullPath);
}
else MessageBox.Show(string.Format("Document {0} does not exist!", _document.DocumentFullPath));

当我执行此代码时,我看到file.Exists返回true,因此该文件确实存在。但随后打开相应的应用程序,例如图像查看器或pdf查看器,具体取决于我尝试打开的文件类型(jpg或pdf),但它在该应用程序中显示无法找到该文件的错误。没有异常被抛出。 这不会一直发生,只适用于某些文件。 如果我尝试通过复制粘贴浏览器中的DocumentFullPath内容来手动打开这些文件,则该文件在适用的应用程序中正确打开。

Duh我不明白什么是错的。 不起作用的文件名示例:

C:\Users\stuyckp\Documents\Visual Studio 2010\Projects\WPF\FrakoKlantOpvolgingWPF\FrakoKlantOpvolgingWPF\bin\Debug\ProjectDocumenten\11339_Wigbers\6197_koelkast \big-money.jpg

我在Windows 10上运行。

1 个答案:

答案 0 :(得分:3)

文件路径中是否有空格? File.Exists可以很好地处理空间,可能与Windows资源管理器一样,但Process.Start可能无法处理。

我认为这就是你想要的萌芽。使用ProcessStartInfo对象的进程开始,文件路径的空格分别作为字符串传递。

Use Process.Start with parameters AND spaces in path