Я пытаюсь понять, как просто записать строку, представляющую строку в файл, где любая вызываемая мной функция автоматически добавляет символ новой строки.
Я пробовал использовать для этого стандартную библиотеку файловой системы NodeJS, но я никак не могу заставить ее работать, не добавляя вручную '\n'
в строку.
Вот код, который я пробовал:
const fs = require('fs');
const writer = fs.createWriteStream('test.out.txt', { flags: 'w' })
writer.write('line 1')
writer.write('line 2');
writer.write('line 3');
writer.end('end');
Однако выходной файл test.out.txt
содержит следующую строку без символов новой строки:
line 1line 2line 3end
Я бы хотел, чтобы это выглядело так:
line 1
line 2
line 3
end
Обратите внимание, что я не пытаюсь регистрировать сообщения и не пытаюсь перенаправить стандартный вывод.
Есть ли способ напечатать его таким образом с автоматически добавленными символами новой строки?
2 ответа
Как упоминалось в комментариях, вы можете написать функцию для добавления текста в виде строки
const writeLine = (writerObject, text) => {
writerObject.write(`${text}\n`)
}
writeLine(writer, 'line 1')
writeLine(writer, 'line 2')
writeLine(writer, 'line 3')
Или вы также можете использовать clojure для создания объекта-оболочки, который сохраняет "писатель" вместо того, чтобы передавать его каждый раз
const customWriter = writerObject => {
return text => writerObject.write(`${text}\n`)
}
const yourWriterWithBreakLine = customWriter(writer)
yourWriterWithBreakLine('line 1')
yourWriterWithBreakLine('line 2')
yourWriterWithBreakLine('line 3')
Добавление \n
вручную не так уж и плохо.
Вы можете написать функцию-оболочку, чтобы не помещать + '\n'
везде:
const os = require('os');
let writeln = function (writeStream, str) {
writeStream.write(str + os.EOL);
}
writeln(writer, 'line 1');
writeln(writer, 'line 2');
writeln(writer, 'line 3');
writeln(writer, 'end');
Из того, что я могу сказать беглым взглядом на документацию fs.WriteStream
, нет встроенной функции writeln
или чего-либо подобного.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.