|
Il .NET Framework offre una vastissima gamma di classi e metodi per operare qualsiasi operazioni di Input/Output e analisi di file e
cartelle. Proprio per il suo scopo, il namespace che contiene tutto questo è chiamato System.IO. Sarebbe un'impresa immane quella di
documentare il funzionamento di ogni membro di ogni classe del namespace in questione, quindi scriverò solamente delle direttive generali sui
tipi da utilizzare in ciascuna situazione.
Esempio: File Browser
Questo programma di esempio permette di navigare nelle cartelle del computer e di ottenere informazioni sui files, usando un sistema di liste
simile (ma non uguale) a quello del vecchio Visual Basic 6. L'interfaccia del programma sarà più o meno così:

E questo il codice:
Class Form1
'Tiene traccia del drive e della cartella corrente
Private CurrentDrive, CurrentDir As String
'Questa funzione permetterà di formattare le date
'in poco spazio
Private Function FormatDate(ByVal D As Date) As String
'Ad esempio
'"lunedì 26 novembre 2007, ore 19:97"
Return D.ToString("dddd dd MMMM yyyy, ore HH:mm")
End Function
Private Sub lstDrive_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs) Handles lstDrive.SelectedIndexChanged
If lstDrive.SelectedIndex = -1 Then
Exit Sub
End If
'Procede solo se la periferica è pronta
If Not (New IO.DriveInfo(lstDrive.SelectedItem).IsReady) Then
MessageBox.Show("La periferica non è pronta!", "File Browser", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
'Memorizza il drive selezionato
CurrentDrive = lstDrive.SelectedItem
'Quando si cambia driver, si resetta la lista delle
'cartelle quindi la cartella iniziale è uguale
'al drive
CurrentDir = CurrentDrive.Clone
'Pulisce la lista delle cartelle
lstDir.Items.Clear()
'Quando si seleziona un drive, carica le cartelle
'al suo interno
For Each Dir As String In _
IO.Directory.GetDirectories(lstDrive.SelectedItem)
lstDir.Items.Add(Dir)
Next
End Sub
Private Sub lstDir_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs) Handles lstDir.SelectedIndexChanged
'Solo se è eramente selezionato un elemento procede
If lstDir.SelectedIndex = -1 Then
Exit Sub
End If
'Memorizza la cartella selezionata
CurrentDir = IO.Path.Combine(CurrentDir, lstDir.SelectedItem)
'Pulisce la lista delle cartelle e dei files
lstDir.Items.Clear()
lstFiles.Items.Clear()
'Carica le sottocartelle, solo con il nome
For Each SubDir As String In IO.Directory.GetDirectories(CurrentDir)
'Si può fare anche con le cartelle, poichè le funzione
'considera solamente il formato della stringa
lstDir.Items.Add(IO.Path.GetFileName(SubDir))
Next
'Carica i files interni alla cartella, solo con il nome
For Each File As String In IO.Directory.GetFiles(CurrentDir)
lstFiles.Items.Add(IO.Path.GetFileName(File))
Next
End Sub
Private Sub lstFiles_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs) Handles lstFiles.SelectedIndexChanged
If lstFiles.SelectedIndex = -1 Then
Exit Sub
End If
'Ottiene le informazioni relative al file
'Path.Combine combina due directory o un file e
'una directory
'per ottenere un percorso completo
Dim Info As New IO.FileInfo( _
IO.Path.Combine(CurrentDir, lstFiles.SelectedItem))
lblInfo.Text = String.Format( _
"Nome: {1}{0}Data creazione: {2}{0}Ultimo accesso: {3}{0}" & _
"Ultima modifica: {4}{0}Dimensione totale: {5:N0} bytes", vbCrLf, _
Info.Name, FormatDate(Info.CreationTime), _
FormatDate(Info.LastAccessTime), FormatDate(Info.LastWriteTime), _
Info.Length)
End Sub
Private Sub cmdParent_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles cmdParent.Click
Try
'Si reca alla directory precedente nell'ordine
'gerarchico
CurrentDir = IO.Directory.GetParent(CurrentDir).FullName
lstDir.Items.Clear()
For Each SubDir As String In IO.Directory.GetDirectories(CurrentDir)
lstDir.Items.Add(IO.Path.GetFileName(SubDir))
Next
Catch Ex As Exception
'Se le directory sono le prime in ordine, si
'genera un errore
MessageBox.Show("Non è possibile risalire più indietro!", _
"File Browser", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End Sub
End Class |
|