Nodejs写文件换行

使用 Nodejs 的 fs.writeFile Api 写文件是很常见的操作。
而写文件过程中换行也是很常见的,但是如何换行这个问题需要注意,因为不同的操作系统换行符是不一样的。

如何换行

操作系统的换行符不一样,其中 Windows 系统是 \r\n
其他系统是 \n

因此,如果需要写出来的文件适用于各个系统,那么写文件的时候就需要判断。

不过好在 Nodejs 提供了换行符常量 os.EOL
用法如下:

1
2
3
const os = require('os')
let str = 'abc'+os.EOL;
fs.writeFileSync(sitemapFile, str)

一个坑

之前不知道这个 API,于是手写了一段代码

1
2
let str = 'abc\r';
fs.writeFileSync(sitemapFile, str)

这段代码看起来没啥问题,能正常写入文件,使用 vsCode 编辑器也能正常打开。
但是,使用 cat 命令、tail 命令都无法读取文件,使用 fs.readFileSync 也无法正常读取。

所以,为了避免不必要的麻烦,使用 Nodejs 写文件的时候,换行符还是建议使用 os.EOL 常量。