使用Nodejs异步将值的总和写入另一个文件

Posted

技术标签:

【中文标题】使用Nodejs异步将值的总和写入另一个文件【英文标题】:Write the sum of the values in to another file using Nodejs asynchronously 【发布时间】:2019-05-11 18:04:42 【问题描述】:

我有一个文件 readData.txt 有值 "10,20,30,40,50,........"like this 我有数字。

现在我想将这些值的总和写入另一个名为 sumfile.txt 的文件中。我正在使用异步的 fs.readFile and fs.writeFile 函数。

我尝试过使用 Promises,它奏效了。但我很好奇我们可以在不使用 Promises 的情况下做到这一点。我正在尝试在没有 Promise 的情况下实现这一目标。

如果有人知道其他方法,我将不胜感激。

【问题讨论】:

使用承诺是...有希望的。它可以帮助您避免回调地狱。 谢谢@Lajos Arpad,问题是我只想更深入地挖掘 NodeJ。主要要求是我正在读取的那个文件中有数字,我想添加这些值,并且我想将该总和存储到另一个文件中,异步读写我不确定我将有多少数据在每次迭代中获取,那么除了 Promises 还有其他方法吗? 我已经给你提供了使用回调的例子,回调不是承诺。但是,它们也是异步的。您需要在异步操作之后实现您需要的逻辑来实现承诺或回调。这是要走的路,同步执行此操作是反模式,应避免。 是的,我有一个想法,非常感谢,非常感谢您的帮助:) 不客气。与此同时,我编辑了我的答案,为您提供有关如何同步执行此操作的信息。 【参考方案1】:

可以使用fs.readFile的回调参数:

fs.readFile('/etc/passwd', (err, data) => 
  if (err) throw err;
  console.log(data);
);

可以使用fs.writeFile的回调参数:

const data = new Uint8Array(Buffer.from('Hello Node.js'));
fs.writeFile('message.txt', data, (err) => 
  if (err) throw err;
  console.log('The file has been saved!');
);

编辑

您也可以使用fs.readFileSync 同步执行此操作

fs.readFileSync('<directory>');

fs.writeFileSync

但最好保持异步。一开始很难,但你所有的努力都会得到回报。

【讨论】:

以上是关于使用Nodejs异步将值的总和写入另一个文件的主要内容,如果未能解决你的问题,请参考以下文章

nodejs文件写入

在nodejs中使用azure blob存储触发器在另一个容器中压缩和写入文件

如何使用 nodejs 将值传递给另一个函数?

nodejs

nodejs 写入文件

JAVA用IO流解析TXT文件,并且将数据写入实体类中!