Leggere i file
Spesso ci capita di leggere dati memorizzati in file di testoe 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 rigacorrispondente
ReadLine Restituisce tutti i caratteri della rigacorrispondente
ReadAll Restituisce tutti i caratteri di tutto il file
Quindi per visualizzare i primi 5 caratteri della primariga, basta digitare:
Response.Write objApriFile.Read(5)
mentre pervisualizzare tutta la riga:
Response.Write objApriFile.ReadLine
infine per visualizzare tutto il documento:
Response.Write objApriFile.ReadAll
Come è facile comprendere spesso non si conosce ilnumero
effettivo di righe all'interno di un file... quindiutilizzare semplice ReadLine non basta e utilizzare ReadAll,invece, provoca un grande spreco di memoria... ReadLine nonbasta in quanto se prova a leggere una riga che non esisteprovoca un errore... questo capita se prevediamo di leggerele prime 10 righe di un file, quando in realtà ce nesono appena 9.
Quindi utilizziamo un'altra proprietàdell'oggetto Text Stream: AtEndOfStream.
Come valori ha True e False (vero e falso), true quando sitrova
alla fine del file.
Quindi con un Do While Not .... possiamo leggere tutto ilfile, riga per riga, sicuri di non provocare errori... lasintassi completa:
Do While Not objApriFile.AdEndofStreamResponse.Write objApriFile.ReadLineLoop
Quindi la sintassi per leggere un file di testo è laseguente:
strPath = Server.Mappath("file.txt")Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")Set objApriFile = objFileSy.OpenTextFile(strPath, 1)Do While Not objApriFile.AdEndofStreamResponse.Write objApriFile.ReadLineLoopobjApriFile.closeSet objApriFile = NothingSet objFileSy = Nothing
