Mi chiedevo come utilizzare C# per trovare un file specifico (esempio cheese.exe) in tutte le possibili directory? E poi memorizzare il percorso nella directory in cui l'ha trovato?Trova un file in tutte le cartelle possibili?
5
A
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));
}
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'è.
Quasi - è necessario aggiungere SearchOption –
cosa succede quando non si ha accesso alla directory give ... dire "Documents and Settings" :) –
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. –