58

我正在使用 C# 开发媒体播放器,但是当我想进行测试时,我遇到了问题。

我必须使用以下路径创建一个新的对象歌曲:

@"C:\Users\Jesus Antonio\Desktop\JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"

它可以工作,但是当我更换计算机时,我必须重写整个路径,我的项目称为 JukeboxV2.0

在java中我记得你可以只写路径例如

@"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"

这将节省大量时间,因为我可以将我的项目带到不同的计算机上并且它可以工作,但是在这里我不知道该怎么做,有人知道吗?

4

3 回答 3

77

您将执行类似的操作来获取应用程序环境文件夹中的路径“Data\ich_will.mp3”。

string fileName = "ich_will.mp3";
string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);

就我而言,它将返回以下内容:

C:\MyProjects\Music\MusicApp\bin\Debug\Data\ich_will.mp3

我在我的例子中使用Path.Combine和。Environment.CurrentDirectory这些非常有用,允许您根据应用程序的当前位置构建路径。Path.Combine组合两个或多个字符串来创建一个位置,并Environment.CurrentDirectory为您提供应用程序的工作目录。

工作目录不一定与您所在的路径相同executable,但在大多数情况下应该是相同的路径,除非另有说明。

于 2012-09-09T08:52:36.760 回答
37
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")

基本目录 + 你的文件名

于 2012-09-09T01:33:16.487 回答
13

我遇到了类似的问题,我的项目中有一个文件,并且想测试一个必须处理从 FS 加载文件并以某种方式处理它们的类。我所做的是:

  • 将文件添加test.txt到我的测试项目
  • 在解决方案资源管理器中命中alt-enter(文件属性)
  • 在那里我设置BuildActionContentCopy to Output DirectoryCopy if newer,我想Copy always也会这样做

然后在我的测试中,我不得不这样做Path.Combine(Environment.CurrentDirectory, "test.txt"),就是这样。每当编译项目时,它都会将文件(以及它的所有父路径,如果它位于文件夹中)复制到bin\Debug(或您正在使用的任何配置)文件夹中。

希望这可以帮助某人

于 2016-06-15T15:42:57.997 回答