Réponses:
Voir DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Je pense que vous voulez obtenir le nom du dossier parent à partir du chemin du fichier. C'est facile à obtenir. Une méthode consiste à créer un FileInfo
objet type et à utiliser sa Directory
propriété.
Exemple:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Essaye ça
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Vous pouvez utiliser ceci:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
fait l'affaire.
Utilisez simplement Path.GetFileName
Ici - Extrayez le nom du dossier du chemin complet d'un dossier:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Voici quelques extras - Extrayez le nom du dossier du chemin complet d'un fichier:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Je me suis dit qu'il n'y avait pas d'autre moyen que d'aller dans le système de fichiers pour savoir si text.txt était un répertoire ou juste un fichier. Si vous vouliez quelque chose de simple, vous pouvez peut-être simplement utiliser:
s.Substring(s.LastIndexOf(@"\"));
Voici une méthode alternative qui a fonctionné pour moi sans avoir à créer un objet DirectoryInfo. Le point clé est que cela GetFileName()
fonctionne lorsqu'il n'y a pas de barre oblique de fin dans le chemin.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Exemple:
var list = Directory.EnumerateDirectories(path, "*")
.Select(p => new
{
id = "id_" + p.GetHashCode().ToString("x"),
text = Path.GetFileName(p.TrimEnd(Path.DirectorySeparatorChar)),
icon = "fa fa-folder",
children = true
})
.Distinct()
.OrderBy(p => p.text);
Cela peut également être fait comme ça;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Basé sur les réponses précédentes (mais corrigé)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Explication de GetFileName
de la source .NET :
Renvoie le nom et les parties d'extension du chemin donné. La chaîne résultante contient les caractères du chemin qui suivent le dernier caractère barre oblique inverse ("\"), barre oblique ("/") ou deux-points (":") dans le chemin. La chaîne résultante est le chemin d'accès complet si le chemin ne contient pas de barre oblique inverse après la suppression des barres obliques, des barres obliques ou des deux-points de fin. La chaîne résultante est nulle si le chemin est nul.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, et ce n'est pas ce que le PO recherchait.