我需要读取节点中的文件,但是,例如,如果文件的大小是4KB,我需要读取第一个1K并在控制台上打印,然后,文件的第二个Kb ......和继续到最后。问题是我不知道如何在第一个Kb之后“停止”阅读并在那之后继续阅读。
任何帮助?
Thanks¡¡
答案 0 :(得分:1)
您可以使用fs.read
读取固定数量的字节,并使用async
进行循环。
未经测试的代码:
var buf = new Buffer();
var length=4096; // you can get this with fs.stat
var position=0;
fs.open('/tmp/file', 'r', function(err, fd) {
if(err) throw err;
async.whilst(
function() { position < length; },
function(callback) {
fs.read(fd, buf, null, 1024, position, function(err, bytesRead, buf) {
if(err) callback(err);
if(bytesRead!=1024) throw new Error('bytes read not 1024');
console.log(buf.toString());
position+=bytesRead;
callback();
});
},
function(err) {
if(err) throw err;
}
);
});