La gestione dei Files

Postando sui vari News Group ho notato che molte persone sanno come accedere ad un database con le svariate tecnologie che esistono ma hanno difficoltà nella gestione di files in maniera diretta.

Questo articolo quindi ha come scopo quello di chiarire in maniera completa i dubbi sorti ai programmatori Visual Basic 6.

Gli accessi ai files possono essere di tre tipi:

  1. Sequenziale
  2. Casuale
  3. Binario

Solitamente ognuno di questi accessi è utile per un determinato tipo di file. Per poter accedere ad un file, la logica da seguire è schematizzata in quattro passaggi fondamentali:

  1. Chiedere al sistema l’assegnazione di un nome logico
  2. Eseguire richiesta di apertura del file
  3. Eseguire le operazioni richieste sui files
  4. Chiudere il file

La funzione FreeFile

La prima fase quindi è quella di rhichiedere un codice al sitema che sarà il nostro nome logico:

Dim nomeLogico as Integer
nomeLogico = freeFile

Ovvero abbiamo chiesto al sistema di assegnarci la prima risorsa libera disponibile per l’accesso ad un file. La funzione FreeFile ritornerà un valore compreso tra 0 e 512.

Dopo aver fatto questo abbiamo necessità di associare il “NomeLogico” con il nome fisico così da far riferimento al NomeLogico ogni volta che si effettua un accesso al file.

La funzione Open

Quando si deve instaurare una connessione al file, è necessario richiamare la funzione Open.

In effetti in Visual Basic, “Open” è un comando nativo ed è integrato nella sintassi del linguaggio e prevede di poter essere strutturato in diversi modi.

La sintassi più estesa per questo comando è:

Open [nome fisico] For [Random|Binary|Input|Output] Access [Read|Write] Lock [read|write] As [nomeLogico] Len = [lunghezzaBaseRecord]

Ovviamente non siamo costretti ad utilizzare sempre tutto anche se io prediligo la versione estesa per l’accesso per il semplice motivo che guardando questa riga ho ben chiaro che cosa voglio fare sul file.

Notate come nella funzione sopra indicata è presente [nomeLogico]… guardiamo subito in pratica come accedere ad un file:

Dim NomeLogico as Integer
Dim NomeFisico as Integer

NomeLogico = FreeFile
NomeFisico = "c:\Esempio\documento.txt"

Open NomeFisico For Random Access Read Lock Write As NomeLogico Len = 123

Descriviamo adesso cosa ho fatto:

Open NomeFisico Richiedo al file system di posizionarsi sul file NomeFisico.

For Random La modalità di accesso al file dovrà essere di tipo casuale (entreremo dopo nel dettaglio).

Access Read Indichiamo che vogliamo eseguire un accesso in lettura al file specificato.

Lock Write Per ottimizzare la velocità di accesso specifichiamo che nessuno potrà scrivere sul file mentre risulta aperto da noi.

Open NomeFisico … As NomeLogico Ci consente di associare il file NomeFisico ad un nome logico NomeLogico.

Len = 123 Indichiamo che la lunghezza di ciascun elemento del file (riga, record o serie di numeri) è di 123 bytes.

Ne conviene che se volessi scrivere invece qualcosa nel file il comando di apertura sarebbe il seguente:

 
Dim NomeLogico as Integer
Dim NomeFisico as Integer

    NomeLogico = FreeFile
    NomeFisico = "c:\Esempio\documento.txt"

    Open NomeFisico For Random Access Write Lock Read As NomeLogico Len = 123

Ottimizzando così l’apertura in scrittura e bloccando la lettura.

Una cosa importante: per evitare di lasciare il file bloccato, bisogna rilasciare la risorsa catturata inzialmente con la funzione FreeFile effettuando una chiamata al metodo Close così come segue:

Call Close(NomeLogico)

Questa operazione deve essere obbligatoria al termine delle operazioni sul file altrimenti si rischia di allocare più handle fino ad arrivare all’esaurimento degli stessi e creando di conseguenza delle situazioni sgradevoli quando si vuole cancellare o riaprire il file!!!