LINQ and File Directories (Visual Basic) (LINQ e directory file (Visual Basic))
Molte operazioni del file system sono essenzialmente query e quindi particolarmente adatte all'approccio LINQ.
Si noti che le query in questa sezione sono non distruttive. Non vengono usate per modificare il contenuto dei file o delle cartelle originali. Ne consegue la regola per cui le query non dovrebbero causare effetti collaterali. In generale, il codice (incluse le query che eseguono operatori create/update/delete) che modifica i dati di origine deve essere mantenuto separato dal codice che esegue esclusivamente query sui dati.
In questa sezione sono descritti gli argomenti seguenti:
Procedura: Eseguire una query per trovare i file con un attributo o un nome specifico (Visual Basic)
La procedura illustra come cercare file esaminando una o più proprietà del relativo oggetto FileInfo.
Procedura: Raggruppare file per estensione (LINQ) (Visual Basic)
La procedura illustra come restituire gruppi dell'oggetto FileInfo in base all'estensione del file.
Procedura: eseguire una query per trovare il numero totale di byte in un set di cartelle (LINQ) (Visual Basic)
La procedura illustra come restituire il numero totale di byte in tutti i file all'interno di un albero di directory specificato.
Procedura: Confrontare il contenuto di due cartelle (LINQ) (Visual Basic)
La procedura illustra come restituire tutti i file presenti in due cartelle specifiche e tutti i file presenti in una cartella, ma non nell'altra.
Procedura: eseguire una query per trovare il file o i file più grandi in un albero di directory (LINQ) (Visual Basic)
La procedura illustra come ripristinare il file più grande, il file più piccolo o un numero specificato di file in un albero di directory.
Procedura: Eseguire una query per trovare i file duplicati in un albero di directory (LINQ) (Visual Basic)
La procedura illustra come raggruppare tutti i nomi file che si verificano in più di una posizione all'interno di un albero di directory specificato. Viene anche illustrato come eseguire confronti più complessi basati su un operatore di confronto personalizzato.
Procedura: Eseguire una query sul contenuto dei file in una cartella (LINQ) (Visual Basic)
La procedura illustra come eseguire l'iterazione nelle cartelle in un albero, aprire ogni file ed eseguire query sul contenuto del file.
Commenti
La creazione di un'origine dati che rappresenta accuratamente il contenuto del file system e gestisce correttamente le eccezioni comporta un certo livello di complessità. Negli esempi riportati in questa sezione viene creata una raccolta di snapshot di oggetti FileInfo, che rappresenta tutti i file in una cartella radice specificata e in tutte le relative sottocartelle. Lo stato effettivo di ogni FileInfo può cambiare nel tempo tra l'inizio e la fine dell'esecuzione di una query. Ad esempio, è possibile creare un elenco di oggetti FileInfo da usare come origine dati. Se si tenta di accedere alla proprietà Length
in una query, l'oggetto FileInfo tenterà di accedere al file system per aggiornare il valore di Length
. Se il file non esiste più, nella query si otterrà un'eccezione FileNotFoundException, anche se non si sta eseguendo una query direttamente nel file system. Alcune query in questa sezione usano un metodo separato che impiega queste particolari eccezioni in determinati casi. Un'altra opzione consiste nel mantenere l'origine dati aggiornata in modo dinamico tramite FileSystemWatcher.