gpt4 book ai didi

node.js - fs 不将所有接收到的数据写入文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:03 24 4
gpt4 key购买 nike

我的node.js脚本:

var net = require('net');
var fs = require('fs');

var client = new net.Socket()

client.connect(PORT, HOST, function () {
client.write('You can Send file\0');
client.on('data', function (data) {
// console.log(data);
var destinationFile = fs.createWriteStream("destination.txt");
destinationFile.write(data);
});
});

它被编码用于从远程主机接收文件。当我使用console.log(data)时,可以将远程数据文件记录到控制台。但为了将数据写入文件,它会写入接收到的数据文件的一部分。如何将所有数据写入文件?谢谢

最佳答案

您得到的原因:

client.on('data') 被多次调用,因为文件是以数据 block 的形式发送的,而不是作为单个整体data 发送的。因此,在接收每条数据时,您将创建一个新的文件流并写入它。

另一方面,

Console.log 可以工作,因为每次写入时它都不会创建新的控制台窗口

快速解决方案是:

client.connect(PORT, HOST, function () {
var destinationFile = fs.createWriteStream("destination.txt");
client.write('You can Send file\0');
client.on('data', function (data) {
// console.log(data);
destinationFile.write(data);
});
});

另请注意 net Documentationnet.connect 方法上:

Normally this method is not needed, as net.createConnection opens the socket. Use this only if you are implementing a custom Socket.

关于node.js - fs 不将所有接收到的数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com