Layer 06

Riconoscered le righe di un file di testo

  <!-- 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

]]>