Duplicate possible:
Comment obtenir uniquement les noms de fichiers dans un répertoire en utilisant c #?
En utilisant C #, je veux obtenir la liste des fichiers d’un dossier.
Mon but: ["file1.txt", "file2.txt"]
Alors j'ai écrit ceci:
string[] files = Directory.GetFiles(dir);
Malheureusement, j'ai ce résultat: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
Je pourrais supprimer la partie "C:\dir \" indésirable par la suite, mais existe-t-il une solution plus élégante?
Vous pouvez utiliser System.IO.Path.GetFileName
pour faire ça.
Par exemple.,
string[] files = Directory.GetFiles(dir);
foreach(string file in files)
Console.WriteLine(Path.GetFileName(file));
Bien que vous puissiez utiliser FileInfo
, il est beaucoup plus lourd que l'approche que vous utilisez déjà (il suffit de récupérer les chemins de fichiers). Je vous suggère donc de vous en tenir à GetFiles
sauf si vous avez besoin des fonctionnalités supplémentaires de la classe FileInfo
.
Essayer,
string[] files = new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();
La ligne ci-dessus peut générer une exception UnauthorizedAccessException. Pour gérer ce lien, consultez le lien ci-dessous.
Regardez à l'aide de FileInfo.Name Property
quelque chose comme
string[] files = Directory.GetFiles(dir);
for (int iFile = 0; iFile < files.Length; iFile++)
string fn = new FileInfo(files[iFile]).Name;
Jetez également un coup d'œil à l'utilisation de DirectoryInfo Class et FileInfo Class
Utilisez ceci pour obtenir uniquement le nom de fichier.
Path.GetFileName(files[0]);