如何在CasperJS中基于数组编写文件

时间:2015-06-30 14:15:09

标签: javascript casperjs

var z = ['111','222','333']
var x = ['zzz','yyy','xxx']
var fs = require('fs');
for(var y = 0; y < 3; y++)
    fs.writeFile('z[y].json', x[y]);

尝试在casper / node.js中执行上述操作,最好的方法是什么。

查看使用文件流等的可能性,但无法准确了解如何进行操作。

1 个答案:

答案 0 :(得分:2)

CasperJS建立在PhantomJS之上,可以访问其File System Module。该模块提供流式版本和单个调用版本。

单次调用

由于您拥有的数组已经在内存中,如果您只是创建一个包含文件内容的字符串并完全写入它可能不会太糟糕:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
var s = "";
for(var y = 0; y < 3; y++)
    s + = x[y] + "\n";
fs.write('text.txt', s);

文件流

要使用文件流,您需要open the stream first然后写入:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
var f = fs.open("text.txt", 'w');
for(var y = 0; y < 3; y++)
    f.write('text.txt', x[y] + "\n");
f.close();

单个调用appender

当然你也可以使用appender,但效率很低,因为文件多次打开和关闭:

var fs = require('fs');
var x = ['zzz', 'yyy', 'xxx'];
for(var y = 0; y < 3; y++)
    fs.write('text.txt', x[y] + "\n", 'a');

将单个字符串转换为多个文件

您似乎想要将不同的字符串写入不同的文件中。根本不需要流。只需在循环中使用第一个建议:

var fs = require('fs');
var z = ['111','222','333']
var x = ['zzz', 'yyy', 'xxx'];
for(var y = 0; y < 3; y++)
    fs.write(z[y]+'.json', x[y]);

请注意,PhantomJS(和CasperJS)的执行环境与node.js不同。您不能简单地在CasperJS或PhantomJS中使用节点模块。