2009-08-04 15 views

risposta

12

Questo frammento di codice recupera un elenco di tutte le unità logiche sulla macchina e quindi cerca tutte le cartelle sull'unità per i file che corrispondono al nome di file "Cheese.exe". Una volta che il ciclo è stato completato, i "file" elenco contiene i

 var files = new List<string>(); 
    //@Stan R. suggested an improvement to handle floppy drives... 
    //foreach (DriveInfo d in DriveInfo.GetDrives()) 
    foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true)) 
    { 
     files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "Cheese.exe", SearchOption.AllDirectories)); 
    } 
+1

Quasi - è necessario aggiungere SearchOption –

+0

cosa succede quando non si ha accesso alla directory give ... dire "Documents and Settings" :) –

+0

sì, sarà necessaria qualche gestione delle eccezioni - il frammento fallirà la maggior parte delle macchine perché l'unità floppy non è pronta. Mostra comunque la sintassi per il metodo GetFiles, che è ciò che è necessario. –

2

Se vuoi sapere un po 'di più sulla meccanica del ricerca più directory, Googling rivelato this post. Ha una buona soluzione e una spiegazione di ricorsività da te stesso attraverso le directory. È possibile modificare il filespec in Directory.GetFiles in modo che corrisponda alla stringa di ricerca e probabilmente utilizzarlo così com'è.

Problemi correlati