File.Exists上找不到文件,路径中有空格

时间:2013-11-19 13:56:02

标签: c# path

如果我的可执行文件是从没有空格的路径运行的,那么

if(!File.Exists(@"\program.exe"))
    MessageBox.Show("File not found");

不开火。但是,如果程序从包含空格的路径执行,例如C:\Program Files\etc\,我会找到一个未找到的文件。我的可执行应用程序和program.exe位于同一文件夹中。

我该如何避免这种情况?

5 个答案:

答案 0 :(得分:4)

虽然它可能似乎就像路径与它有关,但它是工作目录。试试这段代码:

var path = Path.Combine(
    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
        "program.exe");
if (!File.Exists(path))

启动它的路径不会导致代码失败。但是,当工作目录不符合预期时;那会。

此外,永远不会假设您在特定目录中。始终提供完全合格的路径。 SaveFileDialogOpenFileDialog之类的对象可以在运行时更改您的工作目录。

答案 1 :(得分:1)

只需获取执行目录路径并将其附加到exe文件名

即可
string DirPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
if(!File.Exists(DirPath + @"\program.exe"))
    MessageBox.Show("File not found");

答案 2 :(得分:0)

要检查“当前目录”中是否存在文件,您不必输入“\”字符。所以:

if(!File.Exists("program.exe"))
    MessageBox.Show("File not found");

Here一点解释。

答案 3 :(得分:0)

我只是从方法"\"的参数中删除File.Exists(@"program.exe"),并通过GetCurremtDirectory检查当前的工作目录,以确保您传递的相对路径(相对路径)构造正确的可执行完整路径。

答案 4 :(得分:0)

File.Exist(@"\program.exe")

将检查驱动器根目录下的program.exe,例如c:\ program.exe如果你的程序是从c运行的话: