如何用节点读取块中的文件?

时间:2014-11-02 18:29:16

标签: javascript node.js file

我需要读取节点中的文件,但是,例如,如果文件的大小是4KB,我需要读取第一个1K并在控制台上打印,然后,文件的第二个Kb ......和继续到最后。问题是我不知道如何在第一个Kb之后“停止”阅读并在那之后继续阅读。

任何帮助?

Thanks¡¡

1 个答案:

答案 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;
    }
  );
});