Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodejs流一次转换一个字符的文件_Javascript_Node.js_Node Streams - Fatal编程技术网

Javascript 使用nodejs流一次转换一个字符的文件

Javascript 使用nodejs流一次转换一个字符的文件,javascript,node.js,node-streams,Javascript,Node.js,Node Streams,我试图逐个字符(作为块)转换文件,在转换过程中,一些内部状态可能由这些提供的块组成 我使用highWaterMark为1的可读文件流实现了这一点,然后通过一个转换流将其管道化,该转换流将转换结果管道化到目标文件。下面是我的代码: const fs=require(“fs”); 常量转换=需要(“流”)。转换; const src=“源文件的路径”; const target=“结果文件的目标路径”; //确保“target”的目录存在 ensureDir(目标公司); const targetS

我试图逐个字符(作为块)转换文件,在转换过程中,一些内部状态可能由这些提供的块组成

我使用highWaterMark为1的可读文件流实现了这一点,然后通过一个转换流将其管道化,该转换流将转换结果管道化到目标文件。下面是我的代码:

const fs=require(“fs”);
常量转换=需要(“流”)。转换;
const src=“源文件的路径”;
const target=“结果文件的目标路径”;
//确保“target”的目录存在
ensureDir(目标公司);
const targetStream=fs.createWriteStream(目标);
const srcStream=fs.createReadStream(src,{highWaterMark:1});
const transformStream=新转换({
转换(块、编码、回调){
//进行一些转换,并称之为“this.push”或“maby not”
回调();
},
刷新(回调){
//刷新剩余的内部状态
回调();
}
});
srcStream.pipe(transformStream).pipe(targetStream);
但正如各国所说:

highWaterMark只是一个与上游通信的指示器,指示不再写入/推送数据。显然,您可以写入更多的数据,而这些数据将继续在内存中缓冲。highWaterMark不指定传递给_transform()/_write()的块的大小

那么,在一些将被转换的块中,是否存在获得多个字符的风险?
如果是,我如何确保一次只能得到一个呢?

你要求做的事情没有任何意义。你们能解释一下为什么你们想一次处理1个字节吗?我刚刚开始学习node,所以我实际上只是对它很好奇,并且试图理解背压是如何工作的。