一尘不染

如何在C#中的相对路径中获取文件

c#

如果我有一个名为app.exe的可执行文件,这是我在C#中编写的代码,如何使用相对路径从与app.exe相同的目录中加载的文件夹中获取文件?

这会在路径异常中引发非法字符:

string [ ] files = Directory.GetFiles ( "\\Archive\\*.zip" );

在C#中如何做到这一点?


阅读 428

收藏
2020-05-19

共1个答案

一尘不染

为了确保您具有应用程序的路径(而不仅仅是当前目录),请使用以下命令:

http://msdn.microsoft.com/zh-
CN/library/system.diagnostics.process.getcurrentprocess.aspx

现在,您有了一个Process代表正在运行的进程的对象。

然后使用Process.MainModule.FileName

http://msdn.microsoft.com/zh-
cn/library/system.diagnostics.processmodule.filename.aspx

最后,使用Path.GetDirectoryName来获取包含.exe的文件夹:

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\":您需要使用@,以便不会将\反斜杠解释为转义序列的开始)

希望有帮助!

2020-05-19