2011-08-21 13 views

risposta

122

È possibile utilizzare Path.GetFileName per ottenere il nome del file dal percorso completo

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

EDIT: la soluzione di cui sopra utilizza LINQ, quindi richiede .NET 3.5, almeno. Ecco una soluzione che funziona su versioni precedenti:

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

Ciao Thomas, ho ricevuto un errore come questo \t 'System.Array' non contiene una definizione per 'Seleziona' e nessun metodo di estensione 'Seleziona' accettando un primo argomento di tipo 'System.Array' potrebbe essere trovato (ti manca una direttiva using o un riferimento all'assembly?) \t C'è qualcos'altro che devo prendere in considerazione? –

+0

Aggiungi 'using System.Linq;' all'inizio del file e un riferimento all'assembly 'System.Core' se non è già lì. Richiede .NET 3.5 o versione successiva, pubblicherò una soluzione per .NET 2.0 se ne hai bisogno –

+0

grazie mille Thomas. –

6

È possibile utilizzare il metodo Path.GetFileName(yourFileName);(MSDN) per ottenere solo il nome del file.

+0

La domanda riguarda una raccolta di articoli, non un trattamento con valore a stringa singola. – Tigran

5

È possibile utilizzare le classi DirectoryInfo e 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

Ci sono tanti modi :)

prima Way:

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

secondo Way:

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

3 Way:

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