项目文件的文件路径?

时间:2012-09-09 00:39:27

标签: c# .net path

我正在使用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"

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

3 个答案:

答案 0 :(得分:47)

您可以执行类似操作,在应用程序环境文件夹中获取“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.CombineEnvironment.CurrentDirectory。这些非常有用,允许您根据应用程序的当前位置构建路径。 Path.Combine组合了两个或多个字符串来创建位置,Environment.CurrentDirectory为您提供应用程序的工作目录。

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

答案 1 :(得分:23)

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")

基本目录+您的文件名

答案 2 :(得分:5)

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

  • 将文件test.txt添加到我的测试项目
  • 解决方案资源管理器
  • 点击alt-enter(文件属性)
  • 我将BuildAction设置为Content,将Copy to Output Directory设置为Copy if newer,我猜Copy always也会这样做

然后在我的测试中,我只需Path.Combine(Environment.CurrentDirectory, "test.txt")就可以了。无论何时编译项目,它都会将文件(以及它的所有父路径,如果它在文件夹中)保存到bin\Debug(或您正在使用的任何配置)文件夹。 / p>

希望这有助于某人