Cuando utilizo la línea de código que se muestra a continuación, obtengo una matriz de cadenas que contiene la ruta completa de los archivos individuales.
private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf");
Me gustaría saber si hay una manera de recuperar solo los nombres de los archivos en las cadenas en lugar de las rutas completas.

using System.Linq;al principio del archivo y una referencia alSystem.Coreensamblaje si aún no está allí. Requiere .NET 3.5 o superior, publicaré una solución para .NET 2.0 si la necesitaPuede utilizar el método
Path.GetFileName(yourFileName);(MSDN) para obtener simplemente el nombre del archivo.fuente
Puede utilizar las clases DirectoryInfo y 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;fuente
string[] fileEntries = Directory.GetFiles(directoryPath); foreach (var file_name in fileEntries){ string fileName = file_name.Substring(directoryPath.Length + 1); Console.WriteLine(fileName); }fuente
Substringlugar de hacer uso de laPathfunción que hará lo mismo, de una manera potencialmente más robusta?Hay tantas formas :)
1er camino:
string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders);2do camino:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();3er camino:
string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) { return di.Name; }).ToArray();fuente
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(); } } }fuente
Simplemente puede usar linq
Nota: EnumeratesFiles es más eficiente en comparación con Directory.GetFiles, ya que puede comenzar a enumerar la colección de nombres antes de que se devuelva la colección completa.
fuente