可能是重复问题:
如何使用C#仅获取文件夹中的文件名?
我想使用C#获取一个文件夹中的文件列表。
我的目标:["file1.txt", "file2.txt"]
因此,我编写了以下代码:
string[] files = Directory.GetFiles(dir);
不幸的是,我得到了这个输出:["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
我可以在之后剥离不需要的"C:\dir\"部分,但是否有更加优雅的解决方案?
可能是重复问题:
如何使用C#仅获取文件夹中的文件名?
我想使用C#获取一个文件夹中的文件列表。
我的目标:["file1.txt", "file2.txt"]
因此,我编写了以下代码:
string[] files = Directory.GetFiles(dir);
不幸的是,我得到了这个输出:["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
我可以在之后剥离不需要的"C:\dir\"部分,但是否有更加优雅的解决方案?
System.IO.Path.GetFileName
来实现这个功能。string[] files = Directory.GetFiles(dir);
foreach(string file in files)
Console.WriteLine(Path.GetFileName(file));
尽管你可以使用 FileInfo
,但它比你已经使用的方法(仅检索文件路径)更加沉重。因此,我建议你坚持使用 GetFiles
,除非你需要 FileInfo
类的其他功能。
请尝试,
string[] files = new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();
上面的代码行可能会抛出 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]);
string[] files = Directory.GetFiles(dir).Select(file => Path.GetFileName(file)).ToArray();
这行代码的作用是获取目录dir
中的所有文件名,并将它们存储在字符串数组files
中。使用Directory.GetFiles
方法获取目录中的所有文件路径,然后使用Select
方法应用一个函数来获取每个文件的文件名,并使用ToArray
方法将结果存储在字符串数组中。 - Justin Schwartzenbergervar files = Directory.GetFiles(dir).Select(Path.GetFileName);
嗨,Justin。这段代码的意思是获取指定目录下的所有文件名,并将它们存储在一个变量中。 - BlueRaja - Danny PflughoeftIEnumerable<string>
而不是string[]
,以防您需要将其强制转换为字符串数组并访问其方法。 - Marcus Parsons