web-dev-qa-db-fra.com

Chemin de fichier pour les fichiers de projet?

Je travaille sur un lecteur multimédia en C #, mais lorsque je veux faire mon test, j'ai un problème.

Je dois créer une nouvelle chanson d'objet avec le chemin suivant:

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

Cela fonctionne, mais lorsque je change d’ordinateur, je dois réécrire le chemin complet. Mon projet s’appelle JukeboxV2.0.

Dans Java Je me souviens que vous pouvez simplement écrire le chemin par exemple

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

Cela économisera beaucoup de temps car je peux utiliser mon projet sur différents ordinateurs et que cela fonctionne, mais ici, je ne sais pas comment faire cela, personne ne le sait?

37
OscarLeif

Vous feriez quelque chose comme ceci pour obtenir le chemin "Data\ich_will.mp3" dans votre dossier d'environnements d'application.

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

Dans mon cas, il retournerait ce qui suit:

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

J'utilise Path.Combine et Environment.CurrentDirectory dans mon exemple. Celles-ci sont très utiles et vous permettent de créer un chemin basé sur l’emplacement actuel de votre application. Path.Combine combine deux chaînes ou plus pour créer un emplacement, et Environment.CurrentDirectory vous fournit le répertoire de travail de votre application.

Le répertoire de travail n’est pas nécessairement le même chemin que celui où se trouve votre executable, mais dans la plupart des cas, il devrait l'être, sauf indication contraire.

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

répertoire de base + votre nom de fichier

24
jack.li

Je faisais face à un problème similaire, j'avais un fichier sur mon projet et je voulais tester une classe qui devait gérer le chargement de fichiers depuis le FS et les traiter d'une certaine manière. Ce que j'ai fait était :

  • ajouté le fichier test.txt à mon projet de test
  • sur la solution, cliquez sur alt-enter (propriétés du fichier)
  • là, j'ai mis BuildAction sur Content et Copy to Output Directory sur Copy if newer, je suppose que Copy always l'aurait également fait

puis sur mes tests je devais simplement Path.Combine(Environment.CurrentDirectory, "test.txt") et voilà. Chaque fois que le projet est compilé, il copie le fichier (ainsi que tout son chemin parent, au cas où il se trouverait dans un dossier, par exemple) dans le dossier bin\Debug (Ou quelle que soit la configuration utilisée).

Espère que cela aide quelqu'un

5
Luiso