关于stream的一个问题
来源:8-10 总结
李行知
2020-01-11
我看到例如gulp这些都是使用stream进行文件的读取,但是可以写插件对读取的内容进行处理,假如我写了一个插件
将 PX 这两个词转成 rpx
那么是不是有可能因为这个读取机制导致某个chunk的结尾是P 下一个chunk的开头是X
这样转化就会出错了
stream是怎么处理这个问题的呢?
写回答
1回答
-
如果是汉字(多字节)被截断的话,可以设置 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 ,逐行读取。
012020-01-11
相似问题