我正在使用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);
}
我知道我应该打开文件,修改它,然后关闭文件。我想我需要添加每个新行。
这段代码出了什么问题?
答案 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>
解决的问题:
您不要每行打开和关闭文件;你a)打开文件,b)写1-x行,然后c)关闭文件(或者你可以用fileWrite()
一次写出来)
您不需要fileWriteLine和fileWrite,fileWriteLine用于逐行写入,而fileWrite用于一次性写入和整个数据集。
我还将“写入”更改为“追加”,以防您在第一次执行时写入的文件不存在 - 显然,如果您可以保证目标文件存在,则可以替换“追加” “与”写“。请记住,更改此设置也会随着时间的推移而增加您的文件;它可能不是您想要的,所以如果是这种情况,请将其切换回“写入”。
虽然我没有看到你的确切错误就无法确定,但我有预感FileWrite()
行是罪魁祸首。