Riconoscered le righe di un file di testo


Dovreste ormai sapere che ColdFusion Ha la possibilità di leggere i file utilizzando il Tag <CFFILE>. Per esempio, se evete un file di nome filedaleggere.txt nella cartella ‘c:\docs\’, potete farglielo leggere a ColdFusion in questo modo:

  <!-- CF legge il file -->   <CFFILE ACTION="Read"        FILE="c:\starwars\jarjarmustdie.txt"        VARIABLE="file_content">

ColdFusion Legge il file e assegna il suo contenuto alla variabile chiamata #file_content#.
Per visualizzarne il contenuto in una pagina web, dopo aver letto il file dovreste semplicemente utilizzare:

  <!-- Per visualizzare il file su schermo -->   <CFOUTPUT>   #file_content#   </CFOUTPUT>
Se utilizzate questo codice noterete che coldfusion non tiene conto degli a capo scritti nel file. infatti li visualizza in una riga sola.
Cercheremo ora di assicurarci che CF riconosca gli a capo del file originale, e visualizzi soltanto delle linee specifiche del file, diciamo le righe da 10 a 200
Per fare questo, avremo bisogno dell’aiuto degli array (vettori) e del tag <CFLOOP> se non conoscete uno di questi od entrambi vi raccomando il sito ufficiale dell’allaire, purtroppo è in inglese, cercherò prossimamente di tradurre alcuni tag in modo che siano consultabili dal sito etechs.it. Dateci comunque un’occhiata: Allaire documentation

Il codice ASCII 10 significa “nuova riga” detto CR (Carriedge Return) ed anche se noi non lo vediamo scritto sul file, esso esiste, il riferimento a quel carattere in CF si fa così:

  #Chr(10)#

Considerando che #file_content# è una lista (tipo di variabile in CF) e il suo delimitatore è #char10#, saremo in grado di separare ogni linea del file e di visualizzarlo quindi nel giusto modo utilizzanto il tag <CFLOOP>

  <!-- Visualizzazione riga per riga -->   <CFLOOP List="#file_content#" Index="rc" Delimiters="#Chr(10)#">     <CFOUTPUT>     #rc#<BR>     </CFOUTPUT>   </CFLOOP>

A questo punto inseriamo ogni elemento linea individuato in un array chiamato ‘file_array’. Trasformando così la variabile saremo in grado di individuare direttamente una linea chiamando le variabili vettore, esempio la prima, la terza e la quinta: #file_array[1]#, #file_array[3]# and #file_array[5]#.

  <!-- Ogni riga diventa un elemento dell'array -->   <CFSET file_array = ArrayNew(1)>   <CFLOOP List="#file_content#" Index="rc" Delimiters="#Chr(10)#">     <CFSET rc = ArrayAppend(file_array, rc)>   </CFLOOP>      <!-- possiamo quindi visualizzarle singolarmente -->   <CFOUTPUT>   Line 1: #file_array[1]#<BR>   Line 3: #file_array[3]#<BR>   Line 5: #file_array[5]#   </CFOUTPUT>

Infine per visualizzare le linee da 10 a 200 basterà utilizzare un semplcie loop:

  <!-- CF legge il file -->   <CFFILE ACTION="Read"      FILE="c:\starwars\jarjarmustdie.txt"      VARIABLE="file_content">   <!-- Ogni riga diventa un elemento dell'array -->   <CFSET file_array = ArrayNew(1)>   <CFLOOP List="#file_content#" Index="rc" Delimiters="#Chr(10)#">     <CFSET rc = ArrayAppend(file_array, rc)>   </CFLOOP>      <!-- per visualizzare le righe dalla 10 all 200 utilizzando CFLOOP -->   <CFLOOP INDEX="loopcount" FROM="10" TO="200">   <CFOUTPUT>   #file_array[loopcount]#<BR>   </CFOUTPUT>   </CFLOOP>

Congratulazioni avete imparato a visualizzare le singole linee di un file di testo

Riconoscered le righe di un file di testo ultima modifica: 2002-09-25T00:00:00+00:00 da Enrico

Comments are closed.