我可以在fs.createWriteStream中使用forEach吗?

时间:2016-01-30 20:57:11

标签: javascript node.js

我需要创建.txt文件,逐行显示数组的内容。 目前我正在使用以下脚本,但正在创建文件,但它是空的。

什么可能导致问题?

label1.text = "\(currentLocation.coordinate.longitude)"
label2.text = "\(currentLocation.coordinate.latitude)"

2 个答案:

答案 0 :(得分:2)

,您可以在流写入中使用.forEach()。您的问题与.forEach()的使用完全无关。相反,您将错误的参数传递给.write()。它不需要两个单独的参数,它们都是流的数据,就像您正在使用它一样。 .write()的函数签名是:

writable.write(chunk[, encoding][, callback])

所以,当你这样做时:

wstream.write(item, '\n'); 

你的第二个参数被解释为不起作用的编码。实际上,它会引发一个您应该能够看到的异常。

您可以改为:

 wstream.write(item + '\n'); 

这个整体脚本有效:

const fs = require('fs');

var wstream = fs.createWriteStream('myOutput.txt');
[1,2,3,4].forEach(function(item){
   wstream.write(item + '\n'); 
});
wstream.end();

仅供参考,我已经在我自己的计算机上使用节点4.x尝试了这个代码,它可以工作。

答案 1 :(得分:1)

您的数组不是流,因此无需使用流写入。您可以使用fs.writeFile并使用protocol DictConvertibleAndDataRepresentable : DictConvertible, DataRepresentable {} 作为文件内容。

yourArrayOfLines.join('\n')

完成。更少的行,更明显的代码行为(并注意编码是可选的,如果你把它关闭,它将默认为utf8。)