2017-10-12 2 views
-2

Ich mache Projekt auf alle Textdateien von einem ausgewählten Laufwerk zu bekommen. Die Sache ist, ich bekomme Namen aller Textdateien zusammen mit Pfad, aber alles, was ich brauche, ist der Name. Ich will nicht einmal die Erweiterung bekommen, alles was ich will ist der Name dieser Textdatei. Ich habe überall im Internet gesucht, konnte aber nicht die richtige Antwort finden. Ich speichere alle diese Namen in einer Listbox. Hier ist mein Code:GEt nur Dateiname anstelle des gesamten Pfades

String[] dir1 = System.IO.Directory.GetDirectories(@"F:\"); 
for (int i = 0; i < dir1.Length; i++) 
{ 
    FileAttributes attributes = File.GetAttributes(dir1[i]); 

    if ((attributes & FileAttributes.Hidden) != fileAttributes.Hidden) 
    { 
     string folder = @""+ dir1[i]; 
     txtfiles = Directory.GetFiles(folder, "*.txt"); 
     listBox1.Items.AddRange(txtfiles); 
    } 
} 

Wie kann ich nur Namen, anstelle von ganzen Pfad und Erweiterung?

+2

'ich gesucht habe alle über das internet' unwahrscheinlich scheint tun könnte. Füttern Sie Ihren Titel + 'C#' zu Google gibt 2,9 Millionen Treffer zurück – Plutonix

Antwort

1

Sie benötigen Path.GetFileName Methode zu verwenden, die nur die Dateinamen nur zurück, aus dem Weg, so werden extrahieren, was Sie tun können, ist die txtfiles zu projizieren, die Sammlung erhalten von wie nur Dateinamen:

listBox1.Items.AddRange(txtfiles.Select(file=>Path.GetFileName(file)); 

und wenn Sie Pfad benötigen, nicht wirklich sie zu lesen, können Sie EnumerateFiles Methode verwenden, die in der Gedächtnisleistung besser wäre, das wäre:

listBox1.Items.AddRange(txtDirectory.EnumerateFiles(folder, "*.txt") 
           .Select(file=>Path.GetFileName(file)) 
         ); 

auch wenn Sie Name der Datei ohne Erweiterung benötigen, dann können Sie d o als Valuator answer vorgeschlagen.

1

Werfen Sie einen Blick auf System.IO.Path.GetFileNameWithoutExtension()

Sie so etwas wie

txtfiles = Directory.GetFiles(folder, "*.txt"); 
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList(); 
Verwandte Themen