2011-08-21 20 views

Respuesta

122

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

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

EDIT: la solución anterior utiliza LINQ, por lo que requiere .NET 3.5 como mínimo. He aquí una solución que funciona en las 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; 
} 
+0

Hola Thomas, me sale un error como este \t 'System.Array' no contiene una definición para 'Seleccionar' y no se puede encontrar ningún método de extensión 'Seleccionar' aceptando un primer argumento de tipo 'System.Array' (¿Echas en falta una directiva de uso o una referencia de ensamblaje?) \t ¿Hay algo más que deba tener en cuenta? –

+0

Agregue 'using System.Linq;' al principio del archivo, y una referencia al ensamblado 'System.Core' si aún no está allí. Requiere .NET 3.5 o superior, publicaré una solución para .NET 2.0 si lo necesita –

+0

muchas gracias Thomas. –

6

Usted puede utilizar el método Path.GetFileName(yourFileName);(MSDN) para obtener sólo el nombre del archivo.

+0

La pregunta es sobre una colección de artículos, no un tratamiento de valor de cadena única. – Tigran

5

Puede 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; 
0

Hay muchas maneras :)

primera manera:

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

segundo camino:

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

tercera manera:

string[] folders = 
    new DirectoryInfo(yourPath).GetDirectories().Select(delegate(DirectoryInfo di) 
    { 
     return di.Name; 
    }).ToArray(); 
0
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(); 
     } 
    } 
} 
Cuestiones relacionadas