Node中createWriteStream 小坑记录
date
Mar 23, 2022
slug
node-write-stream-issues
status
Published
tags
Node
summary
Node中createWriteStream 的一个问题记录
type
Post
源代码如下:
const fs = require('fs');
const writer = fs.createWriteStream('./foo.txt', {
flags:'a+',
start:4
});
writer.write('你好啊',(err)=>{
if(err){
console.log(err)
return
}
console.log('写入成功')
})
writer.write('李银河',(err)=>{
if(err){
console.log(err)
return
}
console.log('第二次写入成功')
})
writer.end('this is end');一个简单的写入文件操作,并且
createWriteSteam 方法 options 参数里面设置了 start 表示开始位置,从第几个字符开始写入。Node版本相同的情况下( lts 为 16.14.2),Mac 系统能够正常写入,并且是从第四个字符之后进行写入,但是Windows环境下则表现为从最后加入。理论上来说,Node是跨平台的,不应该出现平台差异,但是目前确实存在这个问题,在Windows下如果想要达到效果,需要
flags 设置为 r+ 才可以,这个问题目前只发现了现象,还没有发现具体是什么原因造成的,这部分可能需要查看源码才能找到根本的问题点,今天特此记录一下。