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 846B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. try {
  28. fs.accessSync(dir, fs.F_OK)
  29. } catch (err) {
  30. console.log(err.toString());
  31. return;
  32. }
  33. fs.readdirSync(dir).forEach(f => {
  34. var fname = pathlib.join(dir, f);
  35. var stat = fs.statSync(fname);
  36. if (stat.isDirectory())
  37. exports.rmdir(fname);
  38. else
  39. fs.unlinkSync(fname)
  40. });
  41. fs.rmdir(dir);
  42. }