Directory.GetFiles:如何获得唯一的文件名,而不是完整的path?
可能重复:
如何获得只使用c#的目录中的文件名?
使用C#,我想获取文件夹中的文件列表。
我的目标: ["file1.txt", "file2.txt"]
所以我写了这个:
string[] files = Directory.GetFiles(dir);
不幸的是,我得到这个输出: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
之后我可以去掉不需要的“C:\ dir”部分,但是有没有更优雅的解决scheme?
您可以使用System.IO.Path.GetFileName
来执行此操作。
例如,
string[] files = Directory.GetFiles(dir); foreach(string file in files) Console.WriteLine(Path.GetFileName(file));
虽然你可以使用FileInfo
,但它比你已经使用的方法(只是检索文件path)重得多。 所以我build议你坚持使用GetFiles
除非你需要FileInfo
类的附加function。
尝试,
string[] files = new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();
上面的行可能会抛出UnauthorizedAccessException。 要处理这个检查下面的链接
C#处理LINQ中的System.UnauthorizedAccessException
看看使用FileInfo.Name属性
就像是
string[] files = Directory.GetFiles(dir); for (int iFile = 0; iFile < files.Length; iFile++) string fn = new FileInfo(files[iFile]).Name;
也看看使用DirectoryInfo类和FileInfo类
使用此来获取只有文件名。
Path.GetFileName(files[0]);