Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > ARTICOLO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Gli oggetti FileSystemObject, Drive, File, Folder e gli insiemi Files e Folders

Questa lezione, consultata da 16771 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 66 votanti.


Gli oggetti FileSystemObject, Drive, File, Folder e gli insiemi Files e Folders

Cominciamo ad analizzare brevemente l'oggetto FileSystemObject: esso consente di accedere alle informazioni relative ai file specificati (data, dimensioni, ultima modifica e così via) e ad operare alcune utili modifiche nel loro percorso (li può spostare, copiare, cancellare, aprire e così via).
La sintassi è molto semplice:

Scripting.FileSystemObject

E per inizializzare l'oggetto per poi poterne richiamare metodi e proprietà a seconda delle necessità, sarà necessario includere la seguente linea di codice:

Set FSO = CreateObject("Scripting.FileSystemObject")

I tanti metodi supportate dall'oggetto permettono quindi di accedere realmente a tutti i dati dei file. Analizziamone il primo: GetFile. Attraverso tale metodo si memorizza in un secondo oggetto chiamato File appartenente all'insieme Files (ossia all'insieme di tutti gli oggetti File di una cartella) tutti i dati del file in questione. Proviamo a creare questo oggetto File:

Set File = FSO.GetFile("C:\Dati\nomefile.txt")

Adesso tutte le informazioni di "C:\Dati\nomefile.txt" sono contenute in File e non c'è altro da fare che richiamarle in modo molto semplice, sfruttando tutte le proprietà supportate dall'oggetto File:

With File
MsgBox "Nome: " & .Name & vbCrLf & _
"Nome breve: " & .ShortName & vbCrLf & _
"Dimensioni: " & .Size & vbCrLf & _
"Tipo: " & .Type & vbCrLf & _
"Proprietà: " & .Attributes & vbCrLf & _
"Drive: " & .Drive & vbCrLf & _
"Percorso: " & .Path & vbCrLf & _
"Percorso breve: " & .ShortPath & vbCrLf & _
"Cartella: " & .ParentFolder & vbCrLf & _
"Data creazione: " & .DateCreated & vbCrLf & _
"Ultima modifica: " & .DateLastModified & vbCrLf & _
"Ultimo accesso: " & .DateLastAccessed
End With

Il risultato sarà simile a quello in figura:

Un altro metodo è GetExtensionName che può sostituire la proprietà Type dell'oggetto File. Se ad esempio si volesse conoscere l'estensione del file raggiungibile al percorso "C:\Dati\1dat2.txt" che chiaramente è un file di testo si dovrebbe inserire in una qualsiasi routine questo blocco:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetExtensionName("C:\Dati\1dat2.txt")

Il risultato è mostrato dalla figura sotto:

Sono interessanti anche i metodi FileExists, FolderExists e DriveExists che con un semplice passaggio determinano l'esistenza di un file, di una cartella sull'hard disk o di un'unità qualsiasi (o su un qualsiasi altro supporto).
Nel caso di FileExists:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.FileExists("C:\Dati\1dat2.txt")

:Naturalmente nel caso in cui il file esista la casella di messaggio riporterà "Vero", in caso contrario "Falso". Per quanto riguarda invece FolderExists:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.folderexists("C:\Dati\")

Per DriveExists:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.DriveExists("C:\Dati\")

I metodi GetFileName, GetParentFolderName e GetBaseName che comunque sono già incorporati come proprietà nell'oggetto File, come visto nel primo esempio, servono invece a recuperare il nome di un determinato file o della cartella di appartenenza oppure dell'ultimo elemento di un percorso di un file o di una cartella, escluso di estensione:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetFileName("C:\Dati\1dat2.txt")

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetParentFolderName("C:\Dati\")

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetParentBaseName("C:\Dati\1dat2.txt")

E' poi importante il metodo GetTempName che fornisce il nome di un file temporaneo che è possibile utilizzare nel caso si voglia creare un file:
Ecco alcuni esempi di nomi di file temporanei che genera il metodo GetTempName:

Di seguito troviamo il metodo GetFolder che in maniera simile GetFile e GetDrive memorizzano in un oggetto Folder i dati relativi ad un determinato percorso.
Se infatti inizializziamo l'oggetto Folder e ne estraiamo tutte le proprietà, come nell'esempio riportato qui sotto:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Dati\")
With Folder
MsgBox "Nome: " & .Name & vbCrLf & _
"Nome breve: " & .ShortName & vbCrLf & _
"Data di creazione: " & .DateCreated & vbCrLf & _
"Proprietà: " & .Attributes & vbCrLf & _
"Ultimo accesso: " & .DateLastAccessed & vbCrLf & _
"Ultima modifica: " & .DateLastModified & vbCrLf & _
"Unità: " & .Drive & vbCrLf & _
"E' la cartella principale: " & .IsRootFolder & vbCrLf & _
"Percorso: " & .ParentFolder & vbCrLf & _
"Percorso breve: " & .ShortPath & vbCrLf & _
"Dimensioni: " & .Size & vbCrLf & _
"Tipo: " & .Type & vbCrLf
End With

otteniamo un risultato del tipo:

Andando avanti troviamo il metodo GetSpecialFolder che recupera i dati di una cartella riservata del sistema e li memorizza all'interno di un oggetto Folder.
La sintassi del metodo è:

FSO.GetSpecialFolder(tipocartella)

dove tipocartella può essere uno dei seguenti valori:
WindowsFolder: Cartella Windows che contiene i file installati dal sistema operativo Windows
SystemFolder: Cartella System che contiene le librerie, i tipi di carattere e i driver di periferica
TemporaryFolder: Cartella Temp che viene utilizzata per memorizzare i file temporanei. Il percorso si trova nella variabile di ambiente TMP.
L'esempio sotto riporta un risultato simile a quello che darebbe il metodo GetFolder, se lo si applicasse ad una cartella di tipo riservato:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set SpecialFolder = FSO.GetSpecialFolder(WindowsFolder)
With SpecialFolder
MsgBox "Nome: " & .Name & vbCrLf & _
"Nome breve: " & .ShortName & vbCrLf & _
"Data di creazione: " & .DateCreated & vbCrLf & _
"Proprietà: " & .Attributes & vbCrLf & _
"Ultimo accesso: " & .DateLastAccessed & vbCrLf & _
"Ultima modifica: " & .DateLastModified & vbCrLf & _
"Unità: " & .Drive & vbCrLf & _
"E' la cartella principale: " & .IsRootFolder & vbCrLf & _
"Percorso: " & .ParentFolder & vbCrLf & _
"Percorso breve: " & .ShortPath & vbCrLf & _
"Dimensioni: " & .Size & vbCrLf & _
"Tipo: " & .Type & vbCrLf
End With

Esistono poi una serie di metodi che risultano alle proprietà dell'oggetto Drive. Vediamo prima queste ultime, introducendo Drive come quell'oggetto che consente di accedere alle proprietà di un determinato disco o di una determinata un'unità condivisa di rete.
Come già fatto per l'oggetto File visualizziamo una finestra di messaggio utilizzando tutte le proprietà di cui Drive dispone:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drive = FSO.GetDrive("A:")
With Drive
MsgBox "Spazio disponibile in byte: " & .AvailableSpace & vbCrLf & _
"Spazio disponibile in byte: " & .FreeSpace & vbCrLf & _
"Lettera identificatrice del drive: " & .DriveLetter & vbCrLf & _
"Tipo di unità : " & .DriveType & vbCrLf & _
"File system (FAT, NTFS, CDFS): " & .FileSystem & vbCrLf & _
"Unità attiva: " & .IsReady & vbCrLf & _
"Cartella principale dell'unità: " & .RootFolder & vbCrLf & _
"Numero di serie decimale del volume: " & .SerialNumber & vbCrLf & _
"Nome di condivisione dell'unità: " & .ShareName & vbCrLf & _
"Spazio totale in byte: " & .TotalSize & vbCrLf & _
"Volume dell'unità specificata: " & .VolumeName
End With

Avviando l'applicazione si avrà un risultato come quello mostrato qui sotto:

Notare che AvailableSpace e FreeSpace restituiscono lo stesso risultato, anche se trattando con dimensioni più grosse ci potrebbero essere piccole differenze.

Arriviamo quindi ai metodi di gestione dei file e delle cartelle dell'oggetto FileSystemObject. Per unire un nome ad un percorso esistente si utilizza il metodo BuildPath. Se ad esempio si conosce il percorso di una cartella e si lascia all'utente la scelta di un file al suo interno, si può creare il percorso completo del file unendo percorso della cartella e nome del file:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.BuildPath("C:\Dati", "1dat2.txt")

Per copiare un file o una cartella da un percorso iniziale ad uno di destinazione si usa invece i metodi CopyFile e CopyFolder nei quali si indicano come parametri il percorso di origine, quello di destinazione e True nel caso si voglia sovrascrivere il file o la cartella se questi esistono già e False nel caso contrario.
Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:\Dati\1dat2.txt", "C:\1dat2.txt", False

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder "C:\Dati\ ", "C:\Altracartella\Dati\", False

Il metodo CreateFolder invece crea dal nulla una nuova cartella nel percorso specificato:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder "C:\Dati\DatiDati"

Il metodo CreateTextFile è utile per creare un nuovo file di testo. Per far ciò si devono indicare il percorso del file da creare, True se si desidera sovrascrivere un file eventualmente già esistente, False in caso contrario e ancora True se file viene creato come file Unicode e False se viene creato come ASCII. Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateTextFile "C:\Dati\2dat2.txt", False, False

I metodi DeleteFile e DeleteFolder servono a cancellare un file o una cartella.
Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFile "C:\Dati\2dat2.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "C:\Dati\"

I metodi MoveFile e MoveFolder spostano un file o una cartella da un percorso all'altro. Si devono qundi indicare il percorso di origine e quello di destinazione:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:\Dati\1dat2.txt", "C:\Dati\DatiDati\1dat2.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder "C:\Dati\", "C:\Itad"

Il metodo OpenTextFile apre un file di testo specificato per eseguirne la lettura. E' necessario indicare il percorso del file, la modalità di lettura (ForReading che apre il file in sola lettura per cui non è possibile scriverci, ForAppending che apre il file e vi scrive fino alla fine), True se si vuole creare il file se questo non esiste, False nel caso contrario ed uno dei seguenti valori: TristateUseDefault che apre il file utilizzando l'impostazione predefinita di sistema, TristateTrue che apre il file in formato Unicode e TristateFalse che apre il file in formato ASCII.
Ad esempio:

Const ForReading = 1, ForWriting = 2, ForAppending = 3
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.OpenTextFile ("C:\Dati\1dat2.txt", ForAppending, TristateFalse)

Le ultime parole vanno spese per il rapporto che intercorre tra gli insiemi Folders e Files.
Negli esempi precedenti sono stati omesse alcune proprietà che fanno uso proprio di questi rapporti. Consideriamo dapprima la proprietà Files dell'oggetto Folder.
Attraverso tale proprietà viene restituito un insieme Files composto da tutti gli oggetti File contenuti nella cartella specificata, compresi i file nascosti e di sistema.
In questo modo si può fare uso delle proprietà dell'oggetto File per determinare per ciascuno le proprietà.
Ad esempio, vogliamo determinare le proprietà di ciascun file contenuto nella cartella "C:\Dati" ossia dei file 1dat2.txt e 2dat2.txt:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\Dati\")
Set Files = Folder.Files
For Each File In Files
With File
MsgBox "Nome: " & .Name & vbCrLf & _
"Nome breve: " & .ShortName & vbCrLf & _
"Dimensioni: " & .Size & vbCrLf & _
"Tipo: " & .Type & vbCrLf & _
"Proprietà: " & .Attributes & vbCrLf & _
"Drive: " & .Drive & vbCrLf & _
"Percorso: " & .Path & vbCrLf & _
"Percorso breve: " & .ShortPath & vbCrLf & _
"Cartella: " & .ParentFolder & vbCrLf & _
"Data creazione: " & .DateCreated & vbCrLf & _
"Ultima modifica: " & .DateLastModified & vbCrLf & _
"Ultimo accesso: " & .DateLastAccessed
End With
Next
File

Come risultato si avranno le proprietà di entrambi i file in due finestre di messaggio: