如果我的可执行文件是从没有空格的路径运行的,那么
if(!File.Exists(@"\program.exe"))
MessageBox.Show("File not found");
不开火。但是,如果程序从包含空格的路径执行,例如C:\Program Files\etc\
,我会找到一个未找到的文件。我的可执行应用程序和program.exe
位于同一文件夹中。
我该如何避免这种情况?
答案 0 :(得分:4)
虽然它可能似乎就像路径与它有关,但它是工作目录。试试这段代码:
var path = Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"program.exe");
if (!File.Exists(path))
启动它的路径不会导致代码失败。但是,当工作目录不符合预期时;那会。
此外,永远不会假设您在特定目录中。始终提供完全合格的路径。 SaveFileDialog
和OpenFileDialog
之类的对象可以在运行时更改您的工作目录。
答案 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运行的话: