una saber ruta obtener nombre manipular guardar existe directorios directorio crear carpeta archivos archivo c# .net

saber - ¿Cómo obtener solo nombres de archivos dentro de un directorio usando c#?



obtener ruta de un archivo c# (5)

Cuando uso la línea de código como 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 forma de recuperar solo los nombres de archivo en las cadenas en lugar de las rutas completas.


Hay tantas formas :)

1st Way:

string[] folders = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); string jsonString = JsonConvert.SerializeObject(folders);

2nd Way:

string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(d => d.Name).ToArray();

3ra forma:

string[] folders = new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) { return di.Name; }).ToArray();


Podría usar 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;


Puede usar Path.GetFileName para obtener el nombre de archivo de la ruta completa

private string[] pdfFiles = Directory.GetFiles("C://Documents", "*.pdf") .Select(Path.GetFileName) .ToArray();

EDITAR: la solución anterior usa LINQ , por lo que requiere .NET 3.5 como mínimo. Aquí hay una solución que funciona en versiones anteriores:

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; }


Puede usar el método Path.GetFileName(yourFileName); (MSDN) para obtener el nombre del archivo.


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(); } } }