index.js 930 B

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use strict';
  2. var fs = require('fs');
  3. var BUF_SIZE = 16 * 1024;
  4. /* Compare two files by content. */
  5. function equalFiles(pathA, pathB) {
  6. var statA = fs.lstatSync(pathA);
  7. var statB = fs.lstatSync(pathB);
  8. if (statA.size !== statB.size) {
  9. return false;
  10. }
  11. var fdA = fs.openSync(pathA, 'r');
  12. var fdB = fs.openSync(pathB, 'r');
  13. var bufA = new Buffer(BUF_SIZE);
  14. var bufB = new Buffer(BUF_SIZE);
  15. var readA = 1;
  16. var readB = 1;
  17. while (readA > 0) {
  18. readA = fs.readSync(fdA, bufA, 0, bufA.length, null);
  19. readB = fs.readSync(fdB, bufB, 0, bufB.length, null);
  20. if (readA !== readB) {
  21. return false;
  22. }
  23. for (var i = 0; i < readA; i++) {
  24. if (bufA[i] !== bufB[i]) {
  25. return false;
  26. }
  27. }
  28. }
  29. fs.closeSync(fdA);
  30. fs.closeSync(fdB);
  31. return true;
  32. }
  33. module.exports.equalFiles = equalFiles;