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

Javascript 我可以在fs.createWriteStream中使用forEach吗?,javascript,node.js,Javascript,Node.js,我需要创建.txt文件,逐行显示数组的内容。 目前,我正在使用以下脚本,但正在创建文件,但它是空的 什么会导致问题 var wstream = fs.createWriteStream('myOutput.txt'); [1,2,3,4].forEach(function(item){ wstream.write(item, '\n'); }.bind(this)); wstream.end(); 您的数组不是流,因此不需要使用流写入。您可以在中使用

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

什么会导致问题

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

您的数组不是流,因此不需要使用流写入。您可以在中使用并使用
YourArrayOfflines.join('\n')
作为文件内容

var lines = [.....];
fs.writeFile('myoutput.txt', lines.join('\n'), 'utf8');

完成了。行数越少,代码行为越明显(请注意,编码是可选的,如果不使用它,它将默认为utf8)。

您的数组不是流,因此无需使用流写入。您可以在中使用并使用
YourArrayOfflines.join('\n')
作为文件内容

var lines = [.....];
fs.writeFile('myoutput.txt', lines.join('\n'), 'utf8');

完成了。行数越少,代码行为越明显(请注意,编码是可选的,如果不使用它,它将默认为utf8)。

,您可以在流写入中使用
.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();

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

是的,您可以在流写入中使用
.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();

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

这似乎更像是一个关于他们的流为什么不能正常工作的问题,而不是一个要求以不同方式工作的问题。如果他们不明确自己的数据是静态的还是流,那么就无法判断。你已经涵盖了流部分,我已经涵盖了“如果你不知道writeFile,你可能会想要它”部分,我会让他们选择合适的解决方案。开始回答的“你的数组不是流”完全令人困惑。当然,数组是一个数组,它与是否使用流写入磁盘完全无关。无论数据来自何处,无论数据源是数组还是其他形式,流都非常有用。“有问题”,也许,但肯定不是“完全混淆”:流写入因流输入而发光,并且可以在流上下文之外极大地混淆人们(流是很难的,有很多人会被它们弄糊涂)。因此,如果你只有静态数据,那么你是想写流(如果你觉得舒服的话)还是“将数据转储到文件”就很难了。我们不知道,他们没有说。因为问题中的数组不是流,这是一个非常好的选择。哪一个更适合他们的需要仍然取决于提问者。这似乎更像是一个关于他们的流为什么不工作的问题,而不是一个要求以不同方式工作的问题。如果他们不明确他们的数据是静态的还是流,就没有办法知道。你已经涵盖了流部分,我已经涵盖了“如果你不知道writeFile,你可能会想要它”部分,我会让他们选择合适的解决方案。“你的数组不是流”首先,你的答案是完全令人困惑的。当然,数组是一个数组,它与你是否使用流写入磁盘完全无关。无论数据来自何处,数据源是否是数组,流都有多种用途。“有问题”,也许,但肯定不是“完全混乱”:流式写作与流式输入一起闪耀,并且可以在流式上下文之外让人大惑不解(流很难,有很多人会被它们弄糊涂)。因此,如果你只有静态数据,那么你是想要流式写作(如果你对此感到舒服的话)还是仅仅是一个问题“将数据转储到文件”。我们不知道,他们没有说。因为问题中的数组不是流,这是一个非常好的选择。哪一个更适合他们的需要仍然取决于提出问题的人。