85

可能重复:
如何使用 c# 仅获取目录中的文件名?

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

所以我写了这个:

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

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

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

4

4 回答 4

194

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

例如,

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

虽然您可以使用FileInfo,但它比您已经使用的方法(仅检索文件路径)要重得多。所以我建议你坚持使用,GetFiles除非你需要FileInfo类的附加功能。

于 2012-09-21T04:48:01.237 回答
39

尝试,

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

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

C# 处理 LINQ 中的 System.UnauthorizedAccessException

于 2012-09-21T05:07:34.483 回答
9

看看使用FileInfo.Name 属性

就像是

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

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

也看看使用DirectoryInfo 类FileInfo 类

于 2012-09-21T04:47:19.307 回答
4

使用它仅获取文件名。

Path.GetFileName(files[0]);
于 2012-09-21T04:48:12.933 回答