Leggere i file
Spesso ci capita di leggere dati memorizzati in file di testo
e visualizzarli in una pagina asp.
L'operazione è molto semplice.
Prima di tutto dovremo aprire il file, in questo modo:
strPath = Server.Mappath("file.txt")
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile(strPath, 1)
Poi utilizziamo uno o più metodi (sono in tutto 3)
forniteci dall'oggetto Text Stream
Read(n) Restituisce i primi n caratteri della riga
corrispondente
ReadLine Restituisce tutti i caratteri della riga
corrispondente
ReadAll Restituisce tutti i caratteri di tutto il file
Quindi per visualizzare i primi 5 caratteri della prima
riga, basta digitare:
Response.Write objApriFile.Read(5)
mentre per visualizzare tutta la riga:
Response.Write objApriFile.ReadLine
infine per visualizzare tutto il documento:
Response.Write objApriFile.ReadAll
Come è facile comprendere spesso non si conosce il
numero
effettivo di righe all'interno di un file... quindi
utilizzare semplice ReadLine non basta e utilizzare ReadAll,
invece, provoca un grande spreco di memoria... ReadLine non
basta in quanto se prova a leggere una riga che non esiste
provoca un errore... questo capita se prevediamo di leggere
le prime 10 righe di un file, quando in realtà ce ne
sono appena 9.
Quindi utilizziamo un'altra proprietà
dell'oggetto Text Stream: AtEndOfStream.
Come valori ha True e False (vero e falso), true quando si
trova
alla fine del file.
Quindi con un Do While Not .... possiamo leggere tutto il
file, riga per riga, sicuri di non provocare errori... la
sintassi completa:
Do While Not objApriFile.AdEndofStream Response.Write objApriFile.ReadLine Loop
Quindi la sintassi per leggere un file di testo è la
seguente:
strPath = Server.Mappath("file.txt")
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile(strPath, 1)
Do While Not objApriFile.AdEndofStream
Response.Write objApriFile.ReadLine
Loop
objApriFile.close
Set objApriFile = Nothing
Set objFileSy = Nothing