如何获得只使用c#的目录中的文件名?

当我使用下面的代码行时,我得到一个string数组包含了单个文件的整个path。

private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf"); 

我想知道是否有办法只检索string中的文件名而不是整个path。

您可以使用Path.GetFileName从完整path获取文件名

 private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf") .Select(Path.GetFileName) .ToArray(); 

编辑:上面的解决scheme使用LINQ ,所以它至less需要.NET 3.5。 这是一个适用于早期版本的解决scheme:

 private string[] pdfFiles = GetFileNames("C:\\Documents", *.pdf"); private static string[] GetFileNames(string path, string filter) { string[] files = Directory.GetFiles(path, filter); for(int i = 0; i < files.Length; i++) files[i] = Path.GetFileName(files[i]); return files; } 

你可以使用方法Path.GetFileName(yourFileName); (MSDN)来获取文件的名称。

您可以使用DirectoryInfo和FileInfo类。

 //GetFiles on DirectoryInfo returns a FileInfo object. var pdfFiles = new DirectoryInfo("C:\\Documents").GetFiles("*.pdf"); //FileInfo has a Name property that only contains the filename part. var firstPdfFilename = pdfFiles[0].Name; 

有这么多的方法:)

第一路:

 string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders); 

第二种方式:

 string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray(); 

第三条路:

 string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) { return di.Name; }).ToArray(); 
 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GetNameOfFiles { public class Program { static void Main(string[] args) { string[] fileArray = Directory.GetFiles(@"YOUR PATH"); for (int i = 0; i < fileArray.Length; i++) { Console.WriteLine(fileArray[i]); } Console.ReadLine(); } } }