2014-11-02 87 views
0

我需要讀取節點中的文件,但是,例如,如果文件的大小是4KB,我需要讀取第一個1K並在控制檯上打印它,然後,文件的第二個Kb ...並繼續到最後。問題在於我不知道如何在第一個Kb之後「停止」閱讀,然後在那裏繼續閱讀。如何用節點讀取塊中的文件?

任何幫助?

Thanks¡¡

+0

你必須讓你到目前爲止做了什麼。 – majidarif 2014-11-02 18:37:44

回答

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