Creazione e lettura di file

lezione 6

 

 

 

 

Fausto Marinsalta

 

 



Introduzione

Come promesso, ora ci occuperemo dei file. Nonostante il loro utilizzo sia molto limitato (i database sono maggiormente usati) possono rivelarsi utili per salvare alcune informazioni.

Stavolta la trattazione avverrà con taglio meno discorsivo, privilegiando la disposizione schematica dei contenuti. Forse l’articolo perderà nell’immediato di leggibilità ma in seguito sarà possibile consultarlo a mo’ di manuale, individuando a colpo d’occhio gli oggetti di cui necessitiamo.

FileSystemObject

Per eseguire operazioni su file è necessario utilizzare l’oggetto FileSystemObject , a sua volta contenitore di altri oggetti: Drive per avere informazioni sul drive (es: c: ), Folder per eseguire operazioni sulle cartelle, File per accedere ai file e TextStream per la lettura e scrittura (stream) verso file.

Per creare un’istanza dell’oggetto FileSystemObject è sufficiente utilizzare il metodo Server.CreateObject in questo modo:

 

var oggFile = Server.CreateObject(“Scripting.FileSystemObject”);

 

Prima di vedere all’opera quest’oggetto, vediamo una descrizione dei suoi membri principali (per gli altri potete consultare la documentazione della Microsoft).

 

METODI FileSystemObject

 

CreateTextFile() - crea un file di testo, acquisisce 3 argomenti (gli ultimi due sono opzionali): il nome del file (il percorso deve essere fisico e non relativo), la sovrascrittura (se il file esiste già, impostando true lo si sovrascrive) e l’utilizzo della codifica dei caratteri (con true si sceglie UNICODE, con false ASCII).

 

CreateFolder() - crea una cartella, l’unico argomento è il percorso contenente la directory da creare.

 

DeleteFile() - cancella un file passato come argomento.

 

DeleteFolder() - cancella una cartella passata come argomento.

 

FileExists() - controlla se il file passato per argomento esiste o meno.

 

FolderExists() - controlla se la cartella passata come argomento esiste o meno.

 

GetDrive() - restituisce un’istanza dell’oggetto Drive che viene utilizzato per acquisire informazioni riguardo al drive passato come argomento.

 

GetFile() - restituisce un’istanza dell’oggetto File che viene utilizzato per acquisire informazioni riguardo al file passato come argomento.

 

GetFolder() - restituisce un’istanza dell’oggetto Folder che viene utilizzato per acquisire informazioni riguardo alla cartella passata come argomento.

 

PROPRIETA’/METODI Drive (è necessario istanziare un oggetto con GetDrive() )

 

DriveLetter - contiene la lettera dell’unità corrente.

 

Path - contiene il percorso dell’unità corrente.

 

RootFolder - contiene la cartella radice dell’unità corrente.

 

PROPRIETA’/METODI   Folder (è necessario istanziare un oggetto con GetFolder() )

 

Drive - contiene la lettera del drive in cui si trova la directory.

 

IsRootFolder - ci dice se la cartella è la radice.

 

Name - contiene il nome della cartella.

 

Path - contiene il percorso della cartella.

 

Size - contiene la dimensione della cartella.

 

Delete() - cancella la cartella (non ha bisogno di argomenti).

 

PROPRIETA’/METODI File (è necessario istanziare un oggetto con GetFile() )

 

Name - contiene il nome del file.

 

Path - contiene il percorso del file.

 

Size - contiene la dimensione del file in byte.

 

Delete() - cancella il file (non ha bisogno di argomenti).

 

OpenAsTextStream() - apre un file e restituisce un oggetto ( TextStream ) che ci permette di leggere e scrivere sul file, l’unico argomento veramente importante è il primo che ci permette di stabilire la modalità di apertura del file (sola lettura, sola scrittura, ecc..).

Lettura e scrittura di file

Per leggere e scrivere su di un file è necessario:

Creare un’istanza dell’oggetto FileSystemObject .

Creare un’istanza dell’oggetto File mediante GetFile() .

Richiamare il metodo OpenAsTextStream() .

 

L’oggetto TextStream (generato dalla chiamata di OpenAsTextStream() ) ci mette a disposizione i seguenti membri:

 

PROPRIETA’

 

AtEndOfLile - ci dice se siamo giunti alla fine della riga (disponibile nella modalità sola lettura).

 

AtEndOfStream - ci dice se siamo giunti alla fine del file (disponibile nella modalità sola lettura).

 

METODI

 

Close() - chiude il TextStream.

 

Read() - legge un numero di caratteri determinato dall’argomento passato.

 

ReadAll() - legge tutti i caratteri del file.

 

ReadLine() - legge una riga di caratteri.

 

Skip() - salta un numero di caratteri determinato dall’argomento passato.

 

SkipLine() - salta una riga di un file.

 

Write() - scrive sul file la stringa passata come argomento.

 

WriteLine() - scrive sul file la stringa passata come argomento aggiungendo un carattere di nuova riga.

 

Bene, dopo aver dato un’occhiata ai membri appena descritti, potete affrontare il seguente listato.

Listato 1 - FileSystemObject

<%@ Language=JavaScript %>

<html>

    <head>

        <title> Prova di FileSystemObject </title>

    </head>

    <body>

<%

// Individuazione del file nel server

var filePath = Server.MapPath(“/dati”) + “\\prova.txt”;

 

// Dichiarazioni variabili che conterranno istanze di oggetti

var oggFSO, oggFile, oggStream;

 

// Creazione dell’istanza dell’oggetto FileSystemObject

oggFSO    = Server.CreateObject(“Scripting.FileSystemObject”);

 

// Creazione dell’istanza dell’oggetto File

oggFile   = oggFSO.GetFile(filePath);

 

// Creazione dell’istanza dell’oggetto TextStream

oggStream = oggFile.OpenAsTextStream(2);

 

// Scrittura su file

oggStream.Write(“www.inwind.it”);

 

// Chiusura del file

oggStream.Close();

 

Response.Write(“</head></html>”);

%>

 

Nella riga viene utilizzato il doppio backslash “ \\ ” perché il percorso di un file viene trattato come una comune stringa.

Nella riga 21, l’argomento 2 sta ad indicare che il file viene aperto in scrittura (altri valori: 1 lettura, 8 scrittura alla fine del file).

Conclusioni

Da come avete potuto notare non è così difficile utilizzare i file. Nella prossima lezione verrà trattato l’argomento più interessante della programmazione ASP: i database. Imparerete come utilizzare un database Access tramite la tecnologia ADO e vi dimenticherete dei file!!

In questa lezione avete imparato come:

·         accedere, creare, cancellare, leggere e scrivere file

Glossario

ASCII : American Standard Code for Information Interchange (codice di caratteri formato con 1 byte [256 caratteri]).

Stream : flusso di dati (in questo caso da/verso file).

UNICODE : codice di caratteri formato con 2 byte [50000+ caratteri] (viene supportato interamente solo da alcuni sistemi operativi).