Запись данных в текстовый файл в Node.js

В настоящее время у меня есть следующий блок кода:

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. В настоящее время он записывает данные в командное окно. Я хочу записать данные в текстовый файл в определенное место, как мне это сделать?


person FWing    schedule 01.04.2014    source источник
comment
Обратите внимание, что Java - это не то же самое, что JavaScript; Node.js - это серверный JavaScript.   -  person dimo414    schedule 02.04.2014
comment
вот почему я сказал новичку об этом, я знаю nth abt java :(   -  person FWing    schedule 02.04.2014
comment
К счастью, язык, на котором вы работаете, - это JavaScript, вам не нужно ничего знать о Java.   -  person dimo414    schedule 02.04.2014


Ответы (2)


Используйте модуль 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.
  });
});
person SomeKittens    schedule 01.04.2014
comment
По умолчанию writeFile () перезапишет все, что уже было в файле, поэтому этот ответ оставит только последний элемент данных в файле. - person cybersam; 02.04.2014
comment
ну, это именно то, что я хочу сделать, перезаписать данные и оставить только последние данные в текстовом файле. - person FWing; 02.04.2014
comment
Однако проблема, с которой я столкнулся на данный момент, заключается в том, что у меня нет ошибок, но я не могу сохранить файл .txt даже с функцией поиска Windows: / - person FWing; 02.04.2014
comment
@FWing Файл txt должен находиться в каталоге, в котором вы запустили node - person SomeKittens; 02.04.2014
comment
Ой, спасибо, я понял, не знаю, почему функция поиска не работает - person FWing; 02.04.2014
comment
Без проблем. Не забудьте проголосовать / принять! - person SomeKittens; 02.04.2014

Вам следует прочитать о поддержке файловой системы в node.js.

Следующий метод, вероятно, самый простой способ сделать то, что вы хотите, но он не обязательно самый эффективный, поскольку он каждый раз создает / открывает, обновляет, а затем закрывает файл.

function myWrite(data) {
    fs.appendFile('output.txt', data, function (err) {
      if (err) { /* Do whatever is appropriate if append fails*/ }
    });
}
person cybersam    schedule 01.04.2014
comment
Обязательно ли готовиться к возникновению ошибки? я понятия не имею, что делать? - person FWing; 02.04.2014
comment
Вы можете просто вывести ошибку в консоль, если не знаете, что еще делать. Например: console.error (Не удалось вывести данные. Данные:% s, Ошибка:% s, данные, ошибка); - person cybersam; 02.04.2014
comment
такая же проблема здесь, у меня нет никаких ошибок, но я не смог найти свой файл, я не уверен, работает ли код - person FWing; 02.04.2014
comment
Вы можете явно указать полный путь к файлу, чтобы знать, куда он идет. - person cybersam; 02.04.2014
comment
да, я сделал это, большое вам спасибо! - person FWing; 02.04.2014
comment
Каталог по умолчанию - это каталог, в котором хранится ваш код node.js. - person cybersam; 02.04.2014
comment
@FWing: Добро пожаловать! Пожалуйста, примите мой ответ, если вы решите, что он лучший. Спасибо. - person cybersam; 02.04.2014