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.Core
ensamblaje 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
Substring
lugar de hacer uso de laPath
funció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