在Node.js中将数据写入文本文件

7

目前,我有以下代码块:

net = require('net');
var clients = [];

net.createServer(function(s) {

  clients.push(s);

  s.on('data', function (data) {
    clients.forEach(function(c) {
      c.write(data);
    });
    process.stdout.write(data);//write data to command window
  });

  s.on('end', function() {
    process.stdout.write("lost connection");
  });

}).listen(9876);

这是用于将我的Windows计算机设置为服务器并从我的Linux计算机接收数据的工具。它目前将数据写入命令窗口,我想将数据写入特定位置的文本文件,应该如何操作?


请注意,Java和JavaScript不是同一种语言;Node.js是服务器端的JavaScript。 - dimo414
这就是为什么我说我是新手,我对Java一无所知 :( - FWing
幸运的是,你正在使用的编程语言是JavaScript,你不需要了解Java的任何内容。 - dimo414
2个回答

6
使用 fs 模块处理文件系统:
var net = require('net');
var fs = require('fs');
// ...snip
s.on('data', function (data) {
  clients.forEach(function(c) {
    c.write(data);
  });

  fs.writeFile('myFile.txt', data, function(err) {
    // Deal with possible error here.
  });
});

2
默认情况下,writeFile() 将覆盖文件中已有的任何内容,因此此答案仅会在文件中保留最后一个 'data' 项。 - cybersam
好的,这正是我想要做的,覆盖数据,并仅在文本文件中保留最新的数据。 - FWing
然而,我目前遇到的问题是,我没有任何错误提示,但是即使使用Windows的搜索功能,我也无法找到.txt文件:/ - FWing
@FWing,txt文件应该在你运行node的目录中。 - SomeKittens
好的,谢谢,我明白了,不确定为什么搜索功能不起作用。 - FWing
没有问题。不要忘记点赞/接受! - SomeKittens

4
你应该了解node.js中文件系统的支持。
以下方法可能是实现你想要的功能最简单的方式,但它不一定是最有效的,因为它每次都会创建/打开、更新,然后关闭文件。
function myWrite(data) {
    fs.appendFile('output.txt', data, function (err) {
      if (err) { /* Do whatever is appropriate if append fails*/ }
    });
}

我遇到错误时必须准备好吗?我不知道该怎么办? - FWing
如果你不知道该怎么做,你可以直接在控制台输出一个错误。例如:console.error("无法输出数据。数据:%s,错误:%s", data, err); - cybersam
同样的问题在这里,我没有任何错误,但是我找不到我的文件,我不确定代码是否有效。 - FWing
您可以明确指定文件的完整路径,以便知道它的位置。 - cybersam
是的,我做到了,非常感谢你! - FWing
默认目录是保存您的Node.js代码的目录。 - cybersam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接