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+ 才可以,这个问题目前只发现了现象,还没有发现具体是什么原因造成的,这部分可能需要查看源码才能找到根本的问题点,今天特此记录一下。

© xk_wan 2021 - 2024