2009-11-03 9 views
3

Quel est le meilleur moyen d'obtenir le chemin physique d'un fichier en C#?Chemin du fichier physique

MISE À JOUR:

J'ai un nom de fichier, mais je ne veux pas coder en dur le chemin d'accès car il peut changer. Je connais juste son chemin relatif mais pas son chemin physique.

+0

Il n'y a pas assez d'informations ici pour répondre à votre question. Pouvez-vous expliquer plus en détail ce que vous cherchez? –

+0

J'ai un nom de fichier mais je ne veux pas coder en dur le chemin car il peut changer. Je connais juste son chemin relatif mais pas son chemin physique. –

+0

+1 à @Marc Gravell et @Mitchell Petrotta. J'ai développé dans. Net depuis la version bêta et je n'ai jamais couru à travers l'objet System.IO.Path. Parler d'apprendre quelque chose de nouveau tous les jours, j'aurais dû le savoir il y a quelques années. – David

Répondre

9

Pour les applications normales, Path.GetFullPath(path) retournera ceci. Si c'est web, alors MapPath est ce que vous voulez (par exemple, Server.MapPath("~/foo/bar")).

Re commentaires; essayez HttpContext.Current.Server.MapPath(...); en l'absence de HttpServerUtility (commentaires), puis essayez VirtualPathUtility.ToAbsolute.

+0

Je ne peux pas utiliser MapPath car le constructeur de HttpServerUtility est interne :( –

3

La question est encore peu claire, mais je vais prendre un coup ...

Si tel est Asp.Net, vous pouvez utiliser Server.MapPath comme dans

string fileLocation = Server.MapPath("~/SomeAppRelativeDirectory/SomeFile.ext"); 

Dans WinForms ou Console application, si le fichier est relatif à l'exécutable, vous pouvez essayer d'utiliser System.Environment.CurrentDirectory comme dans

string fullPath = System.IO.Path.Combine(System.Environment.CurrentDirectory, "SomeAppRelativeDirectory/SomeFile.ext"); 
+0

De quel assemblage s'agit-il? –

+0

Les deux sont dans les bibliothèques de classe standard. La première dans System.Web et la suivante dans System.IO. – David

+0

Je suppose que non disponible dans .NET 2.0 –

5

Si vous cherchez le absol de aa fichier chemin ute, vous voulez System.IO.Path.GetFullPath:

Renvoie le chemin absolu pour la chaîne de chemin d'accès spécifié .

string path = "hello.txt"; 
Console.WriteLine(Path.GetFullPath(path)); 

À mon avis, la classe Path est incroyablement utile et lamentablement sous-utilisé.

Questions connexes