117 votes

Obtenir le nom du dossier à partir du chemin complet du fichier

Comment obtenir le nom du dossier à partir du chemin complet de l'application ?

C'est le chemin du fichier ci-dessous,

c:\projects\root\wsdlproj\devlop\beta2\text

Ici, "texte" est le nom du dossier.

Comment puis-je obtenir ce nom de dossier à partir de ce chemin ?

209voto

Alex Pacurar Points 2801

Voir DirectoryInfo.Name :

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;

0 votes

Cela ne nécessite-t-il pas que le dossier existe effectivement dans le système de fichiers (le nom du dossier serait toujours être "text" pour ce chemin de fichier complet si le dossier "c : \projects\root\wsdlproj\devlop\beta2\text " n'existe pas (actuellement) dans le système de fichiers) ?

0 votes

@PeterMortensen, non. Je viens de le tester et la méthode renvoie le nom du dossier de plus bas niveau à partir de la chaîne, même si le chemin du dossier n'existe pas.

1 votes

Merci, excellente réponse. Mais je suis un peu étonné que System.IO.Directory ne supporte pas une telle opération.

30voto

Shekhar Points 2342

Je pense que vous voulez obtenir le nom du dossier parent à partir du chemin du fichier. C'est facile à obtenir. Une façon de le faire est de créer un FileInfo et utiliser son Directory propriété.

Exemple :

FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");

String dirName = fInfo.Directory.Name;

15voto

Øyvind Bråthen Points 25211

Essayez ceci

var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);

0 votes

Si vous avez un nom de fichier dans une chaîne de caractères, il renvoie également le nom de fichier.

1 votes

Dans ce cas, le texte est le nom du fichier (sans extension). Je pensais que c'était ce que le PO recherchait. Le fait qu'il s'agisse d'un dossier ou d'un nom de fichier n'a pas d'importance. Si la chaîne ne contient pas le nom du fichier, ce code lui donnera ce qu'il cherche.

4 votes

A moins que les chemins ne se terminent par un \N comme ça : @"c:\projects\roott\wsdlproj\devlop\beta2\text\"

9voto

Kristof Claes Points 5867

Vous pourriez utiliser ceci :

string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();

0 votes

Et si le chemin ressemble à ceci : @"c : \projects\roott\wsdlproj\devlop\beta2\text\ ", donc avec un DirectorySeparatorChar supplémentaire

1 votes

@Alex - J'ai modifié mon code pour qu'il fonctionne également avec ce type de chemins. StringSplitOptions.RemoveEmptyEntries fait l'affaire.

0 votes

Selon msdn.microsoft.com/fr/us/library/ Si l'autorisation requise n'est pas donnée, FileInfo peut lever une exception.

2voto

krishna Points 21

Dans ce cas, le fichier que vous voulez obtenir est stocké dans la variable strpath :

string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X