2015-10-29 4 views
19

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

+0

Итак, вы хотите, чтобы вставить строку в середину текстовый файл, не так ли?Будет намного проще добавить строки до конца. –

+0

Да, хорошо, как я могу добавить строку в конце? – Meterion

+0

Возможный дубликат [Как добавить файл в узел?] (Http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

ответ

48

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

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

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 

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

logger.end() // close string 
+0

Необходимо сохранить файл ? Если я использую fs.appendFile, файл все еще пуст? – Meterion

+0

'appendFile' откроет текстовый файл, добавит к нему новые данные и сохранит его впоследствии. Итак, нет, вам не нужно его самостоятельно сохранять. Это ваш файл пуст, попробуйте проверить 'err' в обратном вызове appendFile'. –

+0

Спасибо за упоминание как одного, так и нескольких вариантов времени. –

1

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

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

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

1

Шаг 1

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

Шаг 2

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

Этап 3

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

Шаг 4

После того как вы место вставить текст

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

Шаг 5

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

yourArray.join(""); 

Шаг 6

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

fs.createWriteStream(yourArray); 

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

Смежные вопросы