var rs = fs.createReadStream(‘data/soucd1.id.2014060113.grd’, { highWaterMark: 4,start: 0, end: 1821724 } ); rs.on(“data”, function (chunk){ console.log(chunk.readFloatBE(0,true)); });
我尝试用上面这种方式去做,可是读出来的数据好像不对,我对createReadStream函数不是很明白,求解答!
readStream和writeStream一般来 说比较底层,其实也可以用比较高层的读文件方法
var fs = require(‘fs’); var buff = new Buffer(8); buff.writeUInt32BE(1111, 0); buff.writeFloatBE(3.14,4); fs.writeFile(‘data.bin’, buff,{encoding:‘hex’}, function (err) { if (err) throw err; console.log(‘写入成功’); })
fs.readFile(‘data.bin’, { encodinig: ‘hex’ }, function (err, data) { if (err) throw err; console.log(data.readUInt32BE(0)); console.log(data.readFloatBE(4)); });
@nodejser 那我要是只想取其中的某一段二进制流怎么做呢,就是指定起始位置和终止位置
@nodejser 一个二进制文件里存储了多个浮点型数据 我想根据指定的起始位置和终止位置取出中间的所有浮点数据
上面的方法就可以,read相关的方法有一个offset的参数 ,就是用来指定从哪个位置开始读取。单精点浮点总是32位,所以你找到开始位置,循环读就可以了。