如何使用CFSCRIPT重写此代码块?

时间:2012-01-26 22:40:11

标签: coldfusion coldfusion-8

我正在使用ColdFusion 8。

我正在尝试在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);
}

我知道我应该打开文件,修改它,然后关闭文件。我想我需要添加每个新行。

这段代码出了什么问题?

1 个答案:

答案 0 :(得分: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)写1-x行,然后c)关闭文件(或者你可以用fileWrite()一次写出来)

  2. 您不需要fileWriteLine和fileWrite,fileWriteLine用于逐行写入,而fileWrite用于一次性写入和整个数据集。

  3. 我还将“写入”更改为“追加”,以防您在第一次执行时写入的文件不存在 - 显然,如果您可以保证目标文件存在,则可以替换“追加” “与”写“。请记住,更改此设置也会随着时间的推移而增加您的文件;它可能不是您想要的,所以如果是这种情况,请将其切换回“写入”。

    虽然我没有看到你的确切错误就无法确定,但我有预感FileWrite()行是罪魁祸首。