关于stream的一个问题

来源:8-10 总结

李行知

2020-01-11

我看到例如gulp这些都是使用stream进行文件的读取,但是可以写插件对读取的内容进行处理,假如我写了一个插件
将 PX 这两个词转成 rpx
那么是不是有可能因为这个读取机制导致某个chunk的结尾是P 下一个chunk的开头是X
这样转化就会出错了
stream是怎么处理这个问题的呢?

写回答

1回答

双越

2020-01-11

如果是汉字(多字节)被截断的话,可以设置 StringDecoder 来解决,如

const StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');
const buf = Buffer.from('中文字符串!');
for(let i = 0; i < buf.length; i+=5){
  var b = Buffer.allocUnsafe(5);
  buf.copy(b, 0, i);
  console.log(decoder.write(b));
}

但如果是 rpx ,被截断,貌似没有什么解决方案。不过可以考虑使用 readline ,逐行读取。

0
1
李行知
非常感谢!
2020-01-11
共1条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程