You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fsutil.js 865B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var fs = require("fs");
  2. var pathlib = require("path");
  3. /*
  4. * Move a file by copying it, to let it move across devices
  5. */
  6. exports.move = function(src, dst, cb) {
  7. var ws;
  8. try {
  9. ws = fs.createWriteStream(dst);
  10. } catch (err) { return cb(err) }
  11. var rs;
  12. try {
  13. rs = fs.createReadStream(src);
  14. } catch (err) { return cb(err) }
  15. rs
  16. .on("data", d => ws.write(d))
  17. .on("end", () => {
  18. ws.end();
  19. cb();
  20. })
  21. .on("error", cb);
  22. }
  23. /*
  24. * Remove directory, deleting its content in the process
  25. */
  26. exports.rmdir = function(dir) {
  27. console.log("rmdir", dir);
  28. try {
  29. fs.accessSync(dir, fs.F_OK)
  30. } catch (err) {
  31. console.trace(err);
  32. return;
  33. }
  34. fs.readdirSync(dir).forEach(f => {
  35. var fname = pathlib.join(dir, f);
  36. var stat = fs.statSync(fname);
  37. if (stat.isDirectory())
  38. exports.rmdir(fname);
  39. else
  40. fs.unlinkSync(fname)
  41. });
  42. fs.rmdir(dir);
  43. }