2016-05-20 12 views
1

テキストファイルから2行目だけを読みたいのですが、残念ながらこれを行う方法がわかりません。行が見つかったときにループと破損以外の解決策がありますか?テキストファイルから特定の行を読み取るColdfusion

+0

を参照してください?ファイルから1行だけを抽出する組み込みの方法はありません。ファイルをループするか、ファイル内容全体をメモリに読み込んで文字列関数を使用して特定の行番号を抽出する必要があります。どちらも長所と短所があります。しかし、[FileReadLine](https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-eg/filereadline.html)でのループは、[FileRead](https:// helpx .adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-eg/fileopen.html)と文字列関数です。 – Leigh

答えて

2

ステップ1 - 変数にファイルを読む

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

ステップ2 - CHR(10)で区切られたリストとして変数を治療し、第二行を取得。

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

1.上記には、o/s 2に応じて余分な文字が含まれている可能性があります。リスト機能は、ファイル全体を最初にメモリに読み込む必要があるため、小さなファイルに適しています。大きなファイルの場合は、代わりにFileOpenを使用することを検討してください。 – Leigh

2

ここでは、Windowsのテキストファイルの2行目を見つけるのに役立つコードを示します。詳細については

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

ループと間違っている何本FileReadFindLeftReplaceChr

+0

ラインセパレータはo/sに固有です。また、エラーは発生しませんが、引用符とシャープ記号は必要ありません。 – Leigh

+0

@Leighは文字列Chr(13)とChr(10)がWindowsの改行文字を返すので、このコードはWindowsで動作します。 –

関連する問題