Подтвердить что ты не робот

Node.js Запишите строку в файл .txt

Я хочу создать простую систему журналов, которая печатает строку перед прошлой строкой в ​​txt файл с помощью Node.js, но я не знаю, как работает файловая система из Node.js. Может кто-нибудь объяснить это?

4b9b3361

Ответ 1

Вставка данных в середину текстового файла - непростая задача. Если возможно, вы должны добавить его в конец своего файла.

Самый простой способ добавить данные в некоторый текстовый файл - использовать встроенную fs.appendFile(filename, data[, options], callback) из fs модуль:

var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err) {
  if (err) {
    // append failed
  } else {
    // done
  }
})

Но если вы хотите несколько раз записывать данные в файл журнала, тогда лучше использовать fs.createWriteStream(path[, options]) function:

var fs = require('fs')
var logger = fs.createWriteStream('log.txt', {
  flags: 'a' // 'a' means appending (old data will be preserved)
})

logger.write('some data') // append string to your file
logger.write('more data') // again
logger.write('and more') // again

Node будет продолжать добавлять новые данные в ваш файл каждый раз, когда вы вызовете .write, до тех пор, пока ваше приложение не будет закрыто, или пока вы не закроете поток вручную с помощью .end:

logger.end() // close string

Ответ 2

Просто используйте модуль fs и что-то вроде этого:

fs.appendFile('server.log', 'string to append', function (err) {
   if (err) return console.log(err);
   console.log('Appended!');
});

Ответ 3

Если вы хотите внедрить систему журналов, я бы рекомендовал вам посмотреть Bunyan пакет.

Ответ 4

Шаг 1

Если у вас есть небольшой файл Прочитайте все данные файла в памяти

Шаг 2

Преобразование строки данных файла в массив

Шаг 3

Найдите массив, чтобы найти место, где вы хотите вставить текст

Шаг 4

После того, как вы разместите свой текст,

yourArray.splice(index,0,"new added test");

Шаг 5

преобразуйте массив в строку

yourArray.join("");

Шаг 6

напишите свой файл так

fs.createWriteStream(yourArray);

Это не рекомендуется, если ваш файл слишком большой