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