copy-file-sync.js 775 B

12345678910111213141516171819202122232425262728293031323334
  1. var fs = require('graceful-fs')
  2. var BUF_LENGTH = 64 * 1024
  3. var _buff = new Buffer(BUF_LENGTH)
  4. function copyFileSync (srcFile, destFile, options) {
  5. var clobber = options.clobber
  6. var preserveTimestamps = options.preserveTimestamps
  7. if (fs.existsSync(destFile) && !clobber) {
  8. throw Error('EEXIST')
  9. }
  10. var fdr = fs.openSync(srcFile, 'r')
  11. var stat = fs.fstatSync(fdr)
  12. var fdw = fs.openSync(destFile, 'w', stat.mode)
  13. var bytesRead = 1
  14. var pos = 0
  15. while (bytesRead > 0) {
  16. bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos)
  17. fs.writeSync(fdw, _buff, 0, bytesRead)
  18. pos += bytesRead
  19. }
  20. if (preserveTimestamps) {
  21. fs.futimesSync(fdw, stat.atime, stat.mtime)
  22. }
  23. fs.closeSync(fdr)
  24. fs.closeSync(fdw)
  25. }
  26. module.exports = copyFileSync