寫程式的人常有需要處理到大型的檔案讀取,在Node.js中如果直接使用原生的fs.readFile()來讀檔,則會發生"RangeError: length > kMaxLength"之類的Exception,範例程式如下:
//test-fs.js
var fs = require('fs');
fs.readFile('../1G-File.txt', function(e,d){
if(e) console.log(e);
console.log(d);
});
執行的結果如下:
$ node test-fs.js
buffer.js:194
this.parent = new SlowBuffer(this.length);
^
RangeError: length > kMaxLength
at new Buffer (buffer.js:194:21)
at fs.js:220:16
at Object.oncomplete (fs.js:107:15)
這時候借用第三方套件"lazy"+"fs.createReadStream()"的話,將可以很順利的解決讀取大檔案的問題喔∼
var lazy = require("lazy")
, fs = require("fs");
new lazy(fs.createReadStream('../1G-File.txt'))
.lines
.forEach(function(line){
console.log(line.toString());
}
);
執行上將會很順利...這邊不秀了∼給大家參考