从当前项目获取文件路径

时间:2019-08-26 06:26:52

标签: c# visual-studio system.io.file

在我的Visual Studio控制台应用程序中,我的项目位于以下位置:

c:\MyProject\FilesToUpload\test.txt

我正在尝试使用以下代码访问此文件:

string path = Path.Combine(Environment.CurrentDirectory, @"FilesToUpload\", "test.txt");

但是此路径返回:c:\MyProject\bin\debug\net461\FilesToUpload\test.txt

我想要的路径是:c:\MyProject\FilesToUpload\test.txt

2 个答案:

答案 0 :(得分:2)

Environment.CurrentDirectory将返回程序当前正在运行的路径。您需要做的是决定以下一项:

  • 该路径与目录“ FilesToUpload”之间的关系。
  • 硬编码的路径,例如c:\MyProject\FilesToUpload\
  • 可配置的路径,您可以在其中指定并读取您的应用程序。 我个人希望使用此选项,因为它不会取决于您从何处运行应用程序。

在第一种情况下,您可以使用以下内容:

var relation = @"..\..\..\FilesToUpload\";
var currPath = Path.Combine(Environment.CurrentDirectory, relation, "test.txt");

更新/说明:

对于第一种选择,就您的情况(您的示例)而言,使用相对路径应有效地将您返回的路径从以下位置更改:

c:\MyProject\bin\debug\net461\FilesToUpload\test.txt

收件人:

c:\MyProject\bin\debug\net461\..\..\..\FilesToUpload\test.txt

尝试一下,看看它是如何工作的-如果路径不完全正确,您应该能够找到调整方法。

答案 1 :(得分:1)

“ Environment.CurrentDirectory”返回正确的路径。您的应用程序是“ exe”文件,而不是源文件。它从编译输出目录运行。您无需从“ c:\ MyProject \ FilesToUpload \ test.txt”中获取文件,但需要将“ test.txt”的“复制到输出目录”属性更改为“始终复制”。 File properties