javascript - 在 NodeJS 中,如何在不手动添加换行符的情况下将行打印到文件中?

标签 javascript node.js nodejs-stream

我试图弄清楚如何简单地将代表一行的字符串写入文件,其中我调用的任何函数都会自动附加一个换行符。

我已经尝试使用默认的 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

请注意,我并没有尝试记录消息,也没有尝试重定向标准输出。

有没有办法以这种方式打印并自动添加换行符?

最佳答案

正如评论中提到的,您可以编写一个函数来将文本添加为​​一行

const writeLine = (writerObject, text) => {
  writerObject.write(`${text}\n`)
}
writeLine(writer, 'line 1')
writeLine(writer, 'line 2')
writeLine(writer, 'line 3')

或者您也可以使用 clojure 创建一个包装对象,该对象保留“writer”而不是每次都传递它

const customWriter = writerObject => {
  return text => writerObject.write(`${text}\n`)
}

const yourWriterWithBreakLine = customWriter(writer)
yourWriterWithBreakLine('line 1')
yourWriterWithBreakLine('line 2')
yourWriterWithBreakLine('line 3')

关于javascript - 在 NodeJS 中,如何在不手动添加换行符的情况下将行打印到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242838/

相关文章:

javascript - jQuery 对话框定位

node.js - 按日期排序包含多个日期的列表

node.js - Nodejs 和 Jimp 缩略图生成

node.js - 在 NodeJS 中从上传的文件中读取缓冲区数据

javascript - 修改innerHTML使Youtube视频无法播放 - Chrome扩展

javascript - 仅以指定宽度运行脚本,如何?

javascript - 什么是 data-* HTML 属性?

javascript - Vue不读取API

node.js - npm 更新后 angular-cli 构建错误

node.js - 在转换流中实现背压