node.js - 如何将数组写入文件

时间:2013-07-12 11:39:52

标签: javascript node.js

我有一个样本数组如下

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
......
......

6 个答案:

答案 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