我有一个样本数组如下
var arr = [ [ 1373628934214, 3 ],
[ 1373628934218, 3 ],
[ 1373628934220, 1 ],
[ 1373628934230, 1 ],
[ 1373628934234, 0 ],
[ 1373628934237, -1 ],
[ 1373628934242, 0 ],
[ 1373628934246, -1 ],
[ 1373628934251, 0 ],
[ 1373628934266, 11 ] ]
我想把这个数组写成一个文件,比如我得到一个文件如下
1373628934214, 3
1373628934218, 3
1373628934220, 1
......
......
答案 0 :(得分:66)
如果它是一个huuge数组并且在写入之前将它序列化为一个字符串需要太多内存,你可以使用流:
var fs = require('fs');
var file = fs.createWriteStream('array.txt');
file.on('error', function(err) { /* error handling */ });
arr.forEach(function(v) { file.write(v.join(', ') + '\n'); });
file.end();
答案 1 :(得分:15)
请记住,您可以访问好的旧ECMAScript API,在本例中为JSON.stringify()
。
对于像示例中的简单数组:
require('fs').writeFile(
'./my.json',
JSON.stringify(myArray),
function (err) {
if (err) {
console.error('Crap happens');
}
}
);
答案 2 :(得分:11)
一个简单的解决方案是使用writeFile:
require("fs").writeFile(
somepath,
arr.map(function(v){ return v.join(', ') }).join('\n'),
function (err) { console.log(err ? 'Error :'+err : 'ok') }
);
答案 3 :(得分:2)
async function x(){
var arr = [ [ 1373628934214, 3 ],
[ 1373628934218, 3 ],
[ 1373628934220, 1 ],
[ 1373628934230, 1 ],
[ 1373628934234, 0 ],
[ 1373628934237, -1 ],
[ 1373628934242, 0 ],
[ 1373628934246, -1 ],
[ 1373628934251, 0 ],
[ 1373628934266, 11 ] ];
await fs.writeFileSync('./PATH/TO/FILE.txt', arr.join('\n'));
}
答案 4 :(得分:1)
要以ES6方式使用fs.createWriteStream(path[, options])函数来做您想做的事情:
{{1}}
答案 5 :(得分:0)
我们可以简单地将数组数据写入文件系统,但这将引发一个错误,其中将','附加到文件末尾。要处理此问题,可以使用以下代码:
var fs = require('fs');
var file = fs.createWriteStream('hello.txt');
file.on('error', function(err) { Console.log(err) });
data.forEach(value => file.write(`${value}\r\n`));
file.end();
\ r \ n
用于新行。
\ n
没有帮助。 请参阅this