如何检索目录中的所有文件名?

如何检索与目录中的模式匹配的所有文件名? 我试过这个,但它返回完整路径而不是文件名。

Directory.GetFiles (path, "*.txt") 

我是否必须手动裁剪结果的目录路径? 它很简单,但也许有一个更简单的解决方案:)

 foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName)) Console.WriteLine(s); 

假设您正在使用C#,DirectoryInfo类将对您更有用:

 DirectoryInfo directory = new DirectoryInfo(path); FileInfo[] files = directory.GetFiles("*.txt"); 

FileInfo类包含一个属性Name ,它返回没有路径的名称。

有关详细信息,请参阅DirectoryInfo文档和FileInfo文档 。

你想通过子目录进行递归吗? 使用Directory.EnumerateFiles

 var fileNames = Directory.EnumerateFiles(@"\", "*.*", SearchOption.AllDirectories); 

将Path.GetFileName与您的代码一起使用:

 foreach(var file in Directory.GetFiles(path, "*.txt")) { Console.WriteLine(Path.GetFileName(file)); } 

另一种方案:

 DirectoryInfo dir = new DirectoryInfo(path); var files = dir.GetFiles("*.txt"); foreach(var file in files) { Console.WriteLine(file.Name); } 

您可以使用以下代码获取文件名:

  DirectoryInfo info = new DirectoryInfo("C:\Test"); FileInfo[] files = info.GetFiles("*.txt"); foreach(FileInfo file in files) { string fileName = file.Name; } 
 var filenames = Directory.GetFiles(@"C:\\Images", "*.jpg"). Select(filename => Path.GetFileNameWithoutExtension(filename)). ToArray(); 

如果它是你想要的,试试这个

试试这个

 IEnumerable fileNames = Directory.GetFiles(@"\\srvktfs1\Metin Atalay\", "*.dll") .Select(Path.GetFileNameWithoutExtension);