MD5签名是唯一标识一个文件的好办法,之前一直用fs.readFile()。
后来发现当文件太大的时候内存就吃不消了。所以改进了一下读取的方式,用fs.createReadStream(path)。
var fs = require('fs');
var crypto = require('crypto');
var path = '/target/file.data';
var start = new Date().getTime();
var md5sum = crypto.createHash('md5');
var stream = fs.createReadStream(path);
stream.on('data', function(chunk) {
md5sum.update(chunk);
});
stream.on('end', function() {
str = md5sum.digest('hex').toUpperCase();
console.log('文件:'+path+',MD5签名为:'+str+'.耗时:'+(new Date().getTime()-start)/1000.00+"秒");
});