Il modello File System Object (FSO) è uno strumento basato sugli oggetti per l'utilizzo di cartelle e file. Esso consente di utilizzare la sintassi oggetto.metodo con un numeroso gruppo di proprietà, metodi ed eventi per l'elaborazione di cartelle e file. È inoltre possibile utilizzare le istruzioni e i comandi tradizionali di Visual Basic.
Il modello FSO consente alle applicazioni di creare, modificare, spostare ed eliminare cartelle, nonché di rilevare l'esistenza ed eventualmente la posizione di cartelle specifiche. È inoltre possibile ottenere informazioni sulle cartelle, quali il nome, la data di creazione e dell'ultima modifica e così via.
Il modello FSO, inoltre, semplifica l'elaborazione dei file. Quando si accede ai file, l'obiettivo principale è quello di memorizzare i dati in un formato efficace e di facile accesso, che consenta di creare file, inserire e modificare dati ed eseguire l'output, ovvero la lettura, dei dati. Una possibilità è quella di memorizzare i dati in un database, con un significativo sovraccarico di lavoro per l'applicazione. Se, tuttavia, si desidera evitare questo sovraccarico oppure se l'accesso ai dati non richiede la funzionalità aggiuntiva associata a un database completo, la soluzione più efficace è quella di memorizzare i dati in un file di testo o in un file binario.
Definizione tratta da "MSDN"
Di seguito riporto alcune funzioni di codice, che sfuttano il file system object, e che possono ritornare utili a tutti gli siluppatori:
Public Function GetFiles(strFolder As String) As Object
Dim fso As Object
Dim fld As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(strFolder)
Set GetFiles = fld.Files
Set fso = Nothing
Set fld = Nothing
End Function
Public Function OpenTextFile(strPath As String) As String
Dim fso As Object
Dim fil As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fil = fso.OpenTextFile(strPath, 1, True)
OpenTextFile = fil.ReadAll
fil.Close
Set fil = Nothing
Set fso = Nothing
End Function
Public Function GetTempName() As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
GetTempName = fso.GetTempName
Set fso = Nothing
End Function
Public Function CreateFolder(strPath As String)
Dim fso As Object
Dim fld As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.CreateFolder(strPath)
Set fso = Nothing
End Funtion
Public Function FolderExists(strPath As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FolderExists = fso.FolderExists(strPath)
Set fso = Nothing
End Function
Public Function FileExists(strPath As String) As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(strPath)
Set fso = Nothing
End Function
Public Function WriteFile(strPath As String, strContent As String)
Dim fso As Object
Dim fil As Object
Set fso = CreateObject("scripting.filesystemobject")
Set fil = fso.createtextfile(strPath)
fil.Write strContent
fil.Close
Set fil = Nothing
Set fso = Nothing
End Function
Public Function CopyFile(strSourcePath As String, strDestinationPath As String)
Dim fso As Object
Dim fil As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fil = fso.getfile(strSourcePath)
fil.Copy strDestinationPath
Set fil = Nothing
Set fso = Nothing
End Funtion
Public Function DeleteFile(strFileName As String)
Dim fso As Object
Dim fil As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fil = fso.getfile(strFileName)
fil.Attributes = 0
fil.Delete
Set fil = Nothing
Set fso = Nothing
End Function
Public Function UnLockDirectory(strPath As String)
Dim fso As Object
Dim colFiles As Object
Dim fil As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set colFiles = fso.GetFolder(strPath)
For Each fil In colFiles.Files
fil.Attributes = 0
Next
Set fil = Nothing
Set fso = Nothing
End Function
Public Function CountFiles(strPath As String) As Long
Dim fso As Object
Dim colFiles As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set colFiles = fso.GetFolder(strPath)
CountFiles = colFiles.Count
Set colFiles = Nothing
Set fso = Nothing
End Function