如果我有一个名为app.exe的可执行文件,这是我在C#中编写的代码,如何使用相对路径从与app.exe相同的目录中加载的文件夹中获取文件?
这会在路径异常中引发非法字符:
string [ ] files = Directory.GetFiles ( "\\Archive\\*.zip" );
在C#中如何做到这一点?
为了确保您具有应用程序的路径(而不仅仅是当前目录),请使用以下命令:
http://msdn.microsoft.com/zh- CN/library/system.diagnostics.process.getcurrentprocess.aspx
现在,您有了一个Process代表正在运行的进程的对象。
Process
然后使用Process.MainModule.FileName:
Process.MainModule.FileName
http://msdn.microsoft.com/zh- cn/library/system.diagnostics.processmodule.filename.aspx
最后,使用Path.GetDirectoryName来获取包含.exe的文件夹:
Path.GetDirectoryName
http://msdn.microsoft.com/zh- CN/library/system.io.path.getdirectoryname.aspx
所以这就是你想要的:
string folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Archive\"; string filter = "*.zip"; string[] files = Directory.GetFiles(folder, filter);
(请注意,"\Archive\"现在您的问题是@"\Archive\":您需要使用@,以便不会将\反斜杠解释为转义序列的开始)
"\Archive\"
@"\Archive\"
\
希望有帮助!