Możesz użyć, Path.GetFileName
aby pobrać nazwę pliku z pełnej ścieżki
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf")
.Select(Path.GetFileName)
.ToArray();
EDYCJA: powyższe rozwiązanie używa LINQ , więc wymaga co najmniej .NET 3.5. Oto rozwiązanie, które działa we wcześniejszych wersjach:
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;
}
using System.Linq;
na początku pliku i odwołanie doSystem.Core
zestawu, jeśli jeszcze go tam nie ma. Wymaga .NET 3.5 lub nowszego, opublikuję rozwiązanie dla .NET 2.0, jeśli będzie potrzebneMożesz użyć metody
Path.GetFileName(yourFileName);
(MSDN), aby po prostu uzyskać nazwę pliku.źródło
Możesz użyć klas DirectoryInfo i 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;
źródło
string[] fileEntries = Directory.GetFiles(directoryPath); foreach (var file_name in fileEntries){ string fileName = file_name.Substring(directoryPath.Length + 1); Console.WriteLine(fileName); }
źródło
Substring
zamiast korzystać zPath
funkcji, która zrobi to samo, w potencjalnie bardziej niezawodny sposób?Jest tak wiele sposobów :)
1. sposób:
string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders);
Drugi sposób:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();
3 sposób:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) { return di.Name; }).ToArray();
źródło
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(); } } }
źródło
Możesz po prostu użyć linq
Uwaga: EnumeratesFiles jest bardziej wydajne w porównaniu z Directory.GetFiles, ponieważ możesz rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji.
źródło