问题
I am working on a media player in C# but when I want to make my test I have a problem.
I have to create a new object song with the following path:
@"C:\Users\Jesus Antonio\Desktop\JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"
It works but when I change the computer I have to rewrite the entire path, My project is called JukeboxV2.0
In java I remember you can just write the path for example
@"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3"
This will save a lot of time because I can take my project to different computers and it works, but here I don't known how to do that, anyone know?
回答1:
You would do something like this to get the path "Data\ich_will.mp3" inside your application environments folder.
string fileName = "ich_will.mp3";
string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);
In my case it would return the following:
C:\MyProjects\Music\MusicApp\bin\Debug\Data\ich_will.mp3
I use Path.Combine and Environment.CurrentDirectory in my example. These are very useful and allows you to build a path based on the current location of your application. Path.Combine combines two or more strings to create a location, and Environment.CurrentDirectory provides you with the working directory of your application.
The working directory is not necessarily the same path as where your executable is located, but in most cases it should be, unless specified otherwise.
回答2:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"JukeboxV2.0\JukeboxV2.0\Datos\ich will.mp3")
base directory + your filename
回答3:
I was facing a similar issue, I had a file on my project, and wanted to test a class which had to deal with loading files from the FS and process them some way. What I did was:
- added the file
test.txtto my test project - on the solution explorer hit
alt-enter(file properties) - there I set
BuildActiontoContentandCopy to Output DirectorytoCopy if newer, I guessCopy alwayswould have done it as well
then on my tests I just had to Path.Combine(Environment.CurrentDirectory, "test.txt") and that's it. Whenever the project is compiled it will copy the file (and all it's parent path, in case it was in, say, a folder) to the bin\Debug (or whatever configuration you are using) folder.
Hopes this helps someone
来源:https://stackoverflow.com/questions/12335618/file-path-for-project-files