2012-01-26 10 views
1

私はColdFusion 8を使用しています。CFSCRIPTを使用してこのコードブロックを書き換えるにはどうすればよいですか?

このコードブロックをCFSCRIPTに書き込もうとしていますが、それを得ることはできません。

<cfloop query="Q"> 
    <cfscript> 
     // CREATE NEW LINE 
     NewLine = ""; 
    NewLine = NewLine & Q.product_url; 
    </cfscript> 
    <cffile action="append" file="#ThisFile#" output="#NewLine#"> 
</cfloop> 

は、ここで私は、私は、ファイルを開いて、それを修正し、そのファイルを閉じるようになっています知っているCFSCRIPT

// LOOP THROUGH QUERY RESULTS 
for (i = 1; i lte Q.RecordCount; i=i+1) { 
    // CREATE NEW LINE 
    NewLine = ""; 
    NewLine = NewLine & Q.product_url[i]; 
    // READ THE FILE 
    File = fileOpen(ThisFile, "read"); 
    // WRITE NEW LINE TO FILE 
    fileWriteLine(File, "#NewLine#"); 
    fileWrite(ThisFile, File); 
    fileClose(File); 
} 

です。私は新しい行が追加されるたびにそれを行う必要があると思う。

このコードで何が問題になっていますか?

答えて

8

は修正:

<cfscript> 
    myFile = fileOpen(ThisFile, "append"); 

    for (i = 1; i lte Q.RecordCount; i=i+1) { 
     NewLine = ""; 
     NewLine = NewLine & Q.product_url[i]; 

     fileWriteLine(myFile, "#NewLine#"); 
    } 

    fileClose(myFile); 
</cfscript> 

の問題に対処:

  1. あなたは各行を開かないし、ファイルを閉じます。もしa)は開いているファイルを、b)は、その後、C、1-Xラインを書き込み)ファイルを閉じる(交互に、あなたはfileWrite()と一度にすべてを書くことができます)

  2. あなたがfileWriteLineとFILEWRITEの両方を必要としない、fileWriteLineです行単位の書き込みの場合はfileWrite、書き込みの場合はfileWrite、データのセット全体を一度に書き込みます。明らかに、あなたは先のファイルが存在する保証できるならば、あなたを -

私はまた、場合にあなたがに書いているファイルは、最初の実行時に存在していない、「追加」して「書き込み」に変更しました"append"を "write"に置き換えることができます。これを変更すると、時間が経ってもファイルが大きくなることに注意してください。あなたが望むものではないかもしれないので、そうであれば "write"に戻してください。

正確なエラーが表示されないと私は確信が持てませんが、私はそれが犯人であったFileWrite()ラインでした。

+0

うわー!それはすべきであるほど簡単です。私はアドビから直接私の例を得て、なぜそれが冗長である必要があるのか​​をよく理解していませんでした。 Shawn、私が月曜日に仕事に戻ったとき、Adobeにリンクを投稿して、私がその例を得たところ(私が私のバージョンに作ったもの)。本当にありがとう!!! –

関連する問題