it-swarm.com.de

Abrufen des Ordnernamens aus einem Pfad

string path = "C:/folder1/folder2/file.txt";

Welche Objekte oder Methoden könnte ich verwenden, um ein Ergebnis von folder2 zu erhalten?

148
Ash Burlaczenko

Ich würde wahrscheinlich so etwas verwenden:

string path = "C:/folder1/folder2/file.txt";
string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );

Der innere Aufruf von GetDirectoryName gibt den vollständigen Pfad zurück, während der äußere Aufruf von GetFileName() die letzte Pfadkomponente zurückgibt. Dies ist der Ordnername.

Dieser Ansatz funktioniert unabhängig davon, ob der Pfad tatsächlich existiert oder nicht. Dieser Ansatz beruht jedoch auf dem Pfad, der anfänglich mit einem Dateinamen endet. Wenn nicht bekannt ist, ob der Pfad mit einem Dateinamen oder einem Ordnernamen endet, müssen Sie zunächst den tatsächlichen Pfad überprüfen, um zu sehen, ob zuerst eine Datei/ein Ordner am Speicherort vorhanden ist. In diesem Fall könnte die Antwort von Dan Dimitru angemessener sein.

279
LBushkin

Versuche dies:

string filename = @"C:/folder1/folder2/file.txt";
string FolderName = new DirectoryInfo(System.IO.Path.GetDirectoryName(filename)).Name;
23
Wahyu

Einfach und sauber. Verwendet nur System.IO.FileSystem - funktioniert wie ein Zauber:

string path = "C:/folder1/folder2/file.txt";
string folder = new DirectoryInfo(path).Name;
9
susieloo_

Ich habe dieses Code-Snippet verwendet, um das Verzeichnis für einen Pfad abzurufen, wenn sich kein Dateiname im Pfad befindet:

zum Beispiel "c:\tmp\test\visual";

string dir = @"c:\tmp\test\visual";
Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, ""));

Ausgabe:

visuell

6
Mario

DirectoryInfo führt den Verzeichnisnamen aus

string my_path = @"C:\Windows\System32";
DirectoryInfo dir_info = new DirectoryInfo(my_path);
string directory = dir_info.Name;  // System32
6
Sayka
var fullPath = @"C:\folder1\folder2\file.txt";
var lastDirectory = Path.GetDirectoryName(fullPath).Split('\\').LastOrDefault();
2
Shawn

Der folgende Code hilft nur, den Ordnernamen abzurufen

 public ObservableCollection items = new ObservableCollection (); 

 Versuchen
 {
 string [] folderPaths = Directory.GetDirectories (stemp); 
 items.Clear (); 
 foreach (string s in folderPaths) 
 {
 items.Add (neue gridItems {foldername = s.Remove (0, s.LastIndexOf ('\\') + 1), ordnerpfad = s}); 

 } 

 } 
 catch (Ausnahme a) 
 {

 } 
 öffentliche Klasse gridItems 
 {
 öffentlicher String Foldername {get; einstellen; } 
 Öffentlicher String-Ordnerpfad {get; einstellen; } 
 } 
1
Joee

Es ist auch wichtig zu beachten, dass die DirectoryInfo-Klasse, während sie eine Liste von Verzeichnisnamen in einer Schleife abruft, einmalig initialisiert wird, so dass nur ein erster Aufruf möglich ist. Um diese Einschränkung zu umgehen, stellen Sie sicher, dass Sie Variablen innerhalb Ihrer Schleife verwenden, um den Namen eines einzelnen Verzeichnisses zu speichern.

Dieser Beispielcode durchläuft zum Beispiel eine Liste von Verzeichnissen innerhalb eines übergeordneten Verzeichnisses, während er jeden gefundenen Verzeichnisnamen innerhalb eines List-of-String-Typs hinzufügt:

[C #]

        string[] parentDirectory = Directory.GetDirectories("/yourpath");
        List<string> directories = new List<string>();

        foreach (var directory in directories)
        {
            // Notice I've created a DirectoryInfo variable.
            DirectoryInfo dirInfo = new DirectoryInfo(directory);

            // And likewise a name variable for storing the name.
            // If this is not added, only the first directory will
            // be captured in the loop; the rest won't.
            string name = dirInfo.Name;

            // Finally we add the directory name to our defined List.
            directories.Add(name);
        }

[VB.NET]

        Dim parentDirectory() As String = Directory.GetDirectories("/yourpath")
        Dim directories As New List(Of String)()

        For Each directory In directories

            ' Notice I've created a DirectoryInfo variable.
            Dim dirInfo As New DirectoryInfo(directory)

            ' And likewise a name variable for storing the name.
            ' If this is not added, only the first directory will
            ' be captured in the loop; the rest won't.
            Dim name As String = dirInfo.Name

            ' Finally we add the directory name to our defined List.
            directories.Add(name)

        Next directory
0
Willy Kimura