如何获得只使用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(); } } }