Получить новое содержимое файла - PullRequest
2 голосов
/ 04 декабря 2011

Сценарий node.js вызывает систему компьютерной алгебры maxima и перенаправляет мой ввод в stdin максимумов. Maxima записывает обработанный ввод во временный текстовый файл, где для каждого результата возвращается новая строка.

Может ли узел отслеживать новые данные, записанные в файл, и каким-то образом фиксировать эти данные (только новую строку, которая записывается в файл, а не весь файл)?

Я уже пытался fs.watchFile, но не смог получить фактические данные, возвращаемые им.

Спасибо.

1 Ответ

0 голосов
/ 05 декабря 2011

fs.watchFile подключается к фактическим функциям просмотра файлов в вашей операционной системе (inotify в Linux), она делает не что иное, как простую маршрутизацию этих событий.Любая логика, на которой строки были изменены и т. Д., Должна быть реализована вами самостоятельно.Поскольку это файл журнала, вы, вероятно, заинтересованы только в хвосте, и вы можете использовать другие программы для этого.См. этот пример , например.

Если вы хотите бросить свой собственный, просто сделайте что-то вроде:

fs.watchFile("/path/to/log.txt", function (prev, curr) {
    // verify writes
    if (x && y && z) {
        fs.readFile("/path/to/log.txt", "utf8", function (err, body) {
             // check what has been appended
        });
    }
});
...