Wenn ich die folgende Codezeile verwende, erhalte ich ein String-Array, das den gesamten Pfad der einzelnen Dateien enthält.
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf");
Ich würde gerne wissen, ob es eine Möglichkeit gibt, nur die Dateinamen in den Zeichenfolgen und nicht die gesamten Pfade abzurufen.
using System.Linq;
am Anfang der Datei einen Verweis auf dieSystem.Core
Assembly hinzu, falls diese noch nicht vorhanden ist. Es erfordert .NET 3.5 oder höher, ich werde eine Lösung für .NET 2.0 veröffentlichen, wenn Sie es brauchenSie können die Methode
Path.GetFileName(yourFileName);
(MSDN) verwenden, um nur den Namen der Datei abzurufen.quelle
Sie können die Klassen DirectoryInfo und FileInfo verwenden.
//GetFiles on DirectoryInfo returns a FileInfo object. var pdfFiles = new DirectoryInfo("C:\\Documents").GetFiles("*.pdf"); //FileInfo has a Name property that only contains the filename part. var firstPdfFilename = pdfFiles[0].Name;
quelle
string[] fileEntries = Directory.GetFiles(directoryPath); foreach (var file_name in fileEntries){ string fileName = file_name.Substring(directoryPath.Length + 1); Console.WriteLine(fileName); }
quelle
Substring
diePath
Funktion, die dasselbe tut, auf potenziell robustere Weise verwenden, anstatt sie zu nutzen ?Es gibt so viele Möglichkeiten :)
1. Weg:
string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders);
2. Weg:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();
3. Weg:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) { return di.Name; }).ToArray();
quelle
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GetNameOfFiles { public class Program { static void Main(string[] args) { string[] fileArray = Directory.GetFiles(@"YOUR PATH"); for (int i = 0; i < fileArray.Length; i++) { Console.WriteLine(fileArray[i]); } Console.ReadLine(); } } }
quelle
Sie können einfach linq verwenden
Hinweis: EnumeratesFiles ist im Vergleich zu Directory.GetFiles effizienter, da Sie mit der Aufzählung der Namenssammlung beginnen können, bevor die gesamte Sammlung zurückgegeben wird.
quelle