Directory.GetFiles:如何只获取文件名,而不是完整路径?

时间:2012-09-21 04:45:36

标签: c# filepath getfiles

  

可能重复:
  How to get only filenames within a directory using c#?

使用C#,我想获取文件夹中的文件列表 我的目标:["file1.txt", "file2.txt"]

所以我写了这个:

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

不幸的是,我得到了这个输出:["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]

之后我可以删除不需要的“C:\ dir \”部分,但有更优雅的解决方案吗?

4 个答案:

答案 0 :(得分:133)

您可以使用System.IO.Path.GetFileName执行此操作。

如,

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

虽然您可以使用FileInfo,但它比您已经使用的方法(仅检索文件路径)更重要。因此,除非您需要GetFiles类的其他功能,否则我建议您坚持使用FileInfo

答案 1 :(得分:26)

尝试,

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

上面的行可能会抛出UnauthorizedAccessException。要处理此检查以下链接

C# Handle System.UnauthorizedAccessException in LINQ

答案 2 :(得分:8)

查看使用FileInfo.Name Property

类似

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

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

另请参阅使用DirectoryInfo ClassFileInfo Class

答案 3 :(得分:2)

使用此选项仅获取文件名。

Path.GetFileName(files[0]);