Как получить только имена файлов в каталоге с помощью c#?
когда я использую код, как показано ниже , я получаю массив строк, содержащий весь путь на отдельные файлы .
private string[] pdfFiles = Directory.GetFiles("C:Documents", "*.pdf");
Я хотел бы знать, есть ли способ получить только имена файлов в строках, а не все пути.
5 ответов:
можно использовать
Path.GetFileNameполучить имя файла из полного путиprivate string[] pdfFiles = Directory.GetFiles("C:\Documents", "*.pdf") .Select(Path.GetFileName) .ToArray();
EDIT: решение выше использует LINQ, поэтому он требует .NET 3.5 по крайней мере. Вот решение, которое работает на более ранних версиях:
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;
есть так много способов :)
1-й способ:
string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders);2-й способ:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();3-й способ:
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(); } } }
Comments