Tramite l'oggetto Scripting.FileSystemObject é possibile accedere a
qualsiasi file si trovi sul server su cui viene eseguito il codice
ASP.
Quindi non solo i canonici file che sono inseriti nelle directories
effettivamente mappate sotto il web server, ma qualsiasi file presente sul
computer che fa da server, a patto di avere le dovute autorizzazioni per
compiere un'operazione del genere.
Per accedere in lettura ad un file, servono solamente queste due righe di codice:
Set
FileObject=CreateObject("Scripting.FileSystemObject")
Naturalmente al posto di MyFile deve essere inserito il nome del file, digitando il suo percorso completo (tipo c:\tempo\prova.txt) oppure facendolo mappare direttamente al server, nel caso il file in questione risieda in una delle directory accessibile al web server, tramite l'istruzione:
MyFile=Server.MapPath("/aspoint/prova.txt")
che in questo caso indica al server di mappare (cioé tradurre nel
corrispondente reale) l'indirizzo della virtual directory "/aspoint", dando come
risultato una cosa come "c:\web\ospiti\aspoint\".
A questo punto, però, siamo
solo all'inizio. Infatti abbiamo un altro parametro da specificare, la variabile
tipo, che va ad indicare allo script con quale metodo si intende aprire
il file. Abbiamo a disposizione le seguenti opzioni: 1 apre in lettura,
2 apre in scrittura, 8 apre ed aggiunge in scrittura dopo la fine
del file (appending).
Una volta specificate queste informazioni, i metodi usati per leggere o
scrivere sul file appena aperto sono semplicissimi.
Per leggere una riga
basta l'istruzione:
testo=InStream.ReadLine()
testo=InStream.ReadAll
testo=InStream.ReadLine()
va bene nel caso io debba leggere un numero prefissato di linee, ma se non sappiamo a priori quante linee possa contenere il mio file, possiamo utilizzare uno script come il seguente:
Do While not InStream.AtEndOfStream
testo=InStream.ReadLine
Response.Write("<br>Il contenuto della
linea é: "&testo)
loop
Naturalmente si possono fare tutte le modifiche necessarie per adattare lo script alle proprie esigenze.
Per saltare una linea, inoltre, l'istruzione é
InStream.SkipLine()
Per scrivere su un file, abbiamo due possibili strade: aggiungere il testo da scrivere in coda a quanto già contenuto nel file aperto, oppure scrivere su un file nuovo.
Nel primo caso, si usa lo stesso codice di cui sopra per inizializzare l'oggetto ed aprire il file, mentre per la scrittura basterà questo:
testo="prova testo"
InStream.WriteLine(testo)
La sintassi va bene anche per il secondo caso, in cui cambia il tipo di inizializzazione del file, che sarà:
Set
FileObject=CreateObject("Scripting.FileSystemObject")
in cui MyFile non cambia valore.
L'unica differenza sta nel nome che
abbiamo dato all'oggetto che ci permette di accedere al nostro file, per cui per
la scrittura useremo:
testo="prova testo"
OutStream.WriteLine(testo)
data appunto la diversità nel nome dell'oggetto che usiamo come puntatore per il file.
E' sempre consigliabile, per liberare preziose risorse, chiudere i files, con l'istruzione:
OutStream.Close
E' da notare che prima di ogni metodo (quello che sta a destra del punto) é necessario inserire il nome dell'oggetto così come é stato creato tramite l'istruzione
o l'istruzione equivalente
e che é appunto oggetto.
Per verificare se una directory o un file esistono, bisogna usare rispettivamente questi due metodi del FSO:
FileObject.FolderExists(MiaDir)
FileObject.FileExists(MioFile)
dove a MiaDir e MioFile corrispondono delle variabili al cui interno sia presente il percorso completo del file (o della directory), usando un'istruzione del tipo:
MiaDir = Server.MapPath("/directory/sottodirectory/")
Naturalmente le istruzioni di cui sopra restituiscono True nel caso il
file o la directory sia presente, False se non esiste.
Per ulteriori
informazioni si può consultare la documentazione ufficiale Microsoft, avendo
cura di cercare FileObject e quindi proseguire per argomenti correlati, mentre
per una lista di esempi pratici consiglio la sezione Files
di http://www.aspitalia.com/liste/usag/.