86 votes

Directory.GetFiles : comment obtenir uniquement le nom du fichier et non le chemin complet ?

Duplicata 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 dans un dossier.
Mon but : ["file1.txt", "file2.txt"]

Alors j'ai écrit ça :

string[] files = Directory.GetFiles(dir);

Malheureusement, j'obtiens ce résultat : ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]

Je pourrais enlever l'indésirable " C:\dir\ "Mais existe-t-il une solution plus élégante ?

197voto

RedFilter Points 84190

Vous pouvez utiliser System.IO.Path.GetFileName pour le faire.

Par exemple,

string[] files = Directory.GetFiles(dir);
foreach(string file in files)
    Console.WriteLine(Path.GetFileName(file));

Alors que vous pourriez utiliser FileInfo Il s'agit d'une approche beaucoup plus lourde que celle que vous utilisez déjà (récupération des chemins d'accès aux fichiers). Je vous suggère donc de vous en tenir à GetFiles à moins que vous n'ayez besoin des fonctionnalités supplémentaires de l'option FileInfo classe.

39voto

Jignesh Thakker Points 1562

Essayez,

  string[] files =  new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();

La ligne ci-dessus peut provoquer une exception UnauthorizedAccessException. Pour gérer cela, consultez le lien ci-dessous

C# Gérer l'exception System.UnauthorizedAccessException dans LINQ

9voto

astander Points 83138

Essayez d'utiliser Propriété FileInfo.Name

quelque chose comme

string[] files = Directory.GetFiles(dir); 

for (int iFile = 0; iFile < files.Length; iFile++)
    string fn = new FileInfo(files[iFile]).Name;

Essayez également d'utiliser Classe DirectoryInfo y Classe FileInfo

4voto

Osiris Points 2833

Utilisez cette option pour obtenir uniquement le nom du fichier.

Path.GetFileName(files[0]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X