2016-05-20 19 views
1

Ich möchte nur Zeile # 2 aus einer Textdatei lesen, aber leider keine Ahnung, wie dies zu tun ist. Gibt es neben dem Schleifen und Brechen Lösungen, wenn die Zeile gefunden wird?Coldfusion lesen bestimmte Zeile aus der Textdatei

+0

Was mit Looping ist falsch? Es gibt keine integrierte Möglichkeit, nur eine einzelne Zeile aus einer Datei zu extrahieren. Sie müssen entweder die Datei durchlaufen oder den gesamten Dateiinhalt in den Speicher lesen und Zeichenkettenfunktionen verwenden, um eine bestimmte Zeilennummer zu extrahieren. Beide haben Vor- und Nachteile. Schleifen mit [FileReadLine] (https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-eg/filereadline.html) ist jedoch insgesamt robuster als [FileRead] (https: // helpx .adobe.com/coldfusion/cfml-reference/coldfusion-Funktionen/Funktionen-zB/fileopen.html) und String-Funktionen. – Leigh

Antwort

2

Schritt 1 - Lesen der Datei auf eine Variable:

<cffile action = "read" file = "yourFile" variable = "fileContents"> 

Schritt 2 - Saures die Variable als chr (10) getrennte Liste und die zweite Reihe bekommen.

line2 = ListGetAt(fileContents, 2, chr(10)); 
+0

1. Die oben genannten können zusätzliche Zeichen enthalten, abhängig von den o/s 2. Listenfunktionen sind eher für kleinere Dateien geeignet, da die gesamte Datei zuerst in den Speicher gelesen werden muss. Bei größeren Dateien sollten Sie stattdessen FileOpen verwenden. – Leigh

2

Hier ist der Code, der sicher hilft, zweite Zeile der Textdatei unter Windows zu finden.

<cfset var readTextFile = fileRead(FileName) /> 
<cfset var endOfFirstLine = find(chr(13) & chr(10),readTextFile) /> 
<cfset var FirstLine = left(readTextFile,endOfFirstLine) /> 
<cfset removeFirstLine= replace(#readTextFile#,#FirstLine#,"","all")> 
<cfset var endOfsecondLine = find(chr(13) & chr(10),removeFirstLine) /> 
<!---If endOfsecondLine less than 0 means file contains only two lines---> 
<cfif endOfsecondLine GT 0> 
    <cfset var secoundLine = left(removeFirstLine,endOfsecondLine) /> 
<cfelse> 
     <cfset var secoundLine = removeFirstLine/> 
</cfif> 

<cfoutput>#secoundLine#</cfoutput> 

Weitere Details finden diese FileRead, Find, Left, Replace, Chr

+0

Denken Sie daran, Linientrennzeichen sind o/s spezifisch. Auch wenn es keinen Fehler verursacht, sind die Anführungszeichen und die Nummernzeichen nicht erforderlich. – Leigh

+0

@Leeigh stimme string Chr (13) & Chr (10) gibt einen Windows-Zeilenumbruch zurück, so dass dieser Code für Windows funktioniert. –

Verwandte Themen