FSO: File System Object, esempi pratici

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