我想从文件到流读取,将输出传递给一个函数,该函数将upperCase内容然后写入文件.这是我的尝试.我究竟做错了什么?
const fs = require('fs')
const fred = q => {
return q.toUpperCase()
}
fs.createReadStream('input.txt')
.pipe(fred)
.pipe(fs.createWriteStream('output.txt'))
Run Code Online (Sandbox Code Playgroud)
目前的错误是:
dest.on不是一个函数
dan*_*y74 11
根据 Marco 的回答但整理了一下:
const fs = require('fs')
const {Transform} = require('stream')
const upperCaseTransform = new Transform({
transform: (chunk, encoding, done) => {
const result = chunk.toString().toUpperCase()
done(null, result)
}
})
fs.createReadStream('input.txt')
.pipe(upperCaseTransform)
.pipe(fs.createWriteStream('output.txt'))
Run Code Online (Sandbox Code Playgroud)
如果要“转换”流,则必须使用“转换”。我建议您阅读:https : //community.risingstack.com/the-definitive-guide-to-object-streams-in-node-js/
const fs = require('fs')
const Transform = require('stream').Transform;
/// Create the transform stream:
var uppercase = new Transform({
decodeStrings: false
});
uppercase._transform = function(chunk, encoding, done) {
done(null, chunk.toString().toUpperCase());
};
fs.createReadStream('input.txt')
.pipe(uppercase)
.pipe(fs.createWriteStream('output.txt'))
Run Code Online (Sandbox Code Playgroud)
编辑:您需要在块中调用.toString(),因为它是一个缓冲区!:)
| 归档时间: |
|
| 查看次数: |
4175 次 |
| 最近记录: |