Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组上循环并将每次迭代写入同一个文件[nodejs]_Javascript_Node.js_For Loop - Fatal编程技术网

Javascript 如何在数组上循环并将每次迭代写入同一个文件[nodejs]

Javascript 如何在数组上循环并将每次迭代写入同一个文件[nodejs],javascript,node.js,for-loop,Javascript,Node.js,For Loop,我有一个数据数组,我想循环,在循环的同时,我想把它们写入同一个文件。如何实现同样的效果,我下面的代码将只打印最后一次迭代 for (j = 0; j < arrayPart.length; j++){ fs.writeFileSync('message.txt', arrayPart[j]) } message.txt的最后一个值为arrayPart 只需加入数组并写入文件一次: fs.writeFileSync('message.txt', arrayPart.join("")

我有一个数据数组,我想循环,在循环的同时,我想把它们写入同一个文件。如何实现同样的效果,我下面的代码将只打印最后一次迭代

for (j = 0; j < arrayPart.length; j++){
    fs.writeFileSync('message.txt', arrayPart[j])
}
message.txt的最后一个值为arrayPart

只需加入数组并写入文件一次:

fs.writeFileSync('message.txt', arrayPart.join(""));

与每次迭代时打开/写入/关闭不同,我将打开一个写入流,在循环中写入,并在循环结束时关闭:

 const message = fs.createWriteStream(__dirname + "./message.txt");
 for (let j = 0; j <arrayPart.length; j++){
      message.write(arrayPart[j]);
 }
 message.close();

writeFile会在每次调用时覆盖该文件。请参阅,专门将数据写入文件,如果文件已存在,则替换该文件。是的,它工作正常!,现在我还有一个问题,arrayPart数组的大小为600字节。但是我只需要200字节,我怎么能提到它的大小,同时循环说它应该只写200字节。@nidhi数组中有什么?arrayPart是一个响应数组,我们通过点击几个URL得到,我已经将所有响应存储在一个arrayname is arrayPart中。现在我在arrayPart上循环并将其写入文件。因为我希望文件的大小是特定的。如果文件不是“.txt”而是“.jpg”,我也可以使用同样的东西吗!,现在我还有一个问题,arrayPart数组的大小为600字节。但我只需要200字节,我怎么能提到它的大小,而循环说它应该只写200字节bytes@NidhiSharmaarrayPart.join将生成一个字符串。如果只想写入该字符串的前200个字符,可以像fs.writeFileSync'message.txt',arrayPart.join.slice0200那样对其进行切片@如果字符串包含一些多字节字符,而您想要的正好是200字节,那么就先对该缓冲区进行切片:fs.writeFileSync'message.txt',buffer.fromarrayPart.join,utf8.slice0200;好的,明白了。但是arrayPart是我们从几个URL得到的一组响应,在某些情况下,我们可能希望编写类似sample.jpg的图像。这有助于我将其写入图像文件吗also@NidhiSharma我不确定。如果数组包含缓冲区而不是字符串,那么join将无法按预期工作,您可能需要使用Buffer.concat来实现:fs.writeFileSync'sample.jpg',Buffer.concatarrayPart。concat返回一个缓冲区,所以可以像以前一样对其使用slice。
 fs.writeFileSync('message.txt', arrayPart.join(""));