Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

VB.NET : scansione ricorsiva di files e directory

Autore: Giovanni Bernardo | Data pubblicazione: 5 settembre 2009
Categorie: Programmazione VB.NET

vbnet_scansione_ricorsiva_files_e_directoriesIn questo articolo vi illustro un semplicissimo codice per effettuare la scansione ricorsiva di una cartella: viene passato il percorso di una cartella radice ad una funzione e questa apre una ad una tutte le eventuali sottocartelle per elencarne i files contenuti. Alla fine dell’operazione vengono mostrati in una textbox tutti i files trovati nella cartella radice con il relativo percorso.

Per iniziare dovremo importare la libreria System.IO che contiene tutte le funzioni che ci servono per operare su files e directories:

Imports System.IO

Nel form abbiamo inserito una textbox multilinea e una label che mostra il numero di files scansionati man mano che la scansione procede. Il percorso dei singoli files, completo del nome del file, viene aggiunto ad uno StringBuilder il cui contenuto viene illustrato nella textbox multilinea una volta terminata la scansione.

Faremo quindi utilizzo di due funzioni ricorsive (ovvero che si chiamano l’un l’altra): una per eseguire la scansione delle directory (ProcessDir) ed una per eseguire la scansione dei files (ProcessFile):

Public Sub ProcessDir(ByVal Dir As String)
 
        ' Processa la lista dei files trovati nella directory passata
        Dim fileEntries As String() = Directory.GetFiles(Dir)
        For Each fileName As String In fileEntries
            ProcessFile(fileName)
        Next
 
        ' Processa tutte le directory trovate nella directory passata alla funzione
        Dim subdirectoryEntries As String() = Directory.GetDirectories(Dir)
        For Each subdirectory As String In subdirectoryEntries
            ProcessDir(subdirectory)
        Next
 
End Sub
 
Public Sub ProcessFile(ByVal FilePath As String)
 
        ' processa il file
 
        ' possiamo recuperare varie informazioni sul file tramite FileInfo
        ' ed eventualmente inserire qui altre routine di controllo, in questo
        ' codice ci limitiamo soltanto ad elencare tutti i files con le sottodirectory
        ' Dim InfoFile As New FileInfo(FilePath)
 
        FileList.Append(FilePath & vbCrLf) ' aggiungo il file esaminato ora alla lista
 
        CountFiles += 1 ' incremento il numero di files
 
        lblNoFiles.Text = CountFiles ' aggiorno la label col numero di files
 
        lblNoFiles.Refresh() ' e ne effettuo il refresh
 
    End Sub

In realtà la funzione ProcessFile potrebbe essere qualcosa di più elaborato (come specificato nelle note si potrebbe utilizzare la funzione FileInfo per recuperare informazioni sul file ed eseguire altre, specifiche, elaborazioni), ma qui ci siamo limitati unicamente a inserire il file completo di percorso in una stringa. Sta a voi elaborare qualcosa di più complesso.

Gli utenti iscritti al sito possono scaricare gratuitamente il codice sorgente di esempio, completo di chiari commenti che possono aiutarvi a comprendere e a fare meglio di me.

Come sempre si raccomanda di non fare utilizzo commerciale del codice proposto e di segnalare/commentare.

Scansione ricorsiva files e directories in vb.net (35)

Articoli che potrebbero interessarti

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra.
Se desiderate che settorezero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa

Puoi lasciare un commento, o un trackback dal tuo sito.

  1. Ancora nessun commento.

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2012 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.