fileManager.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. var fs = require('fs');
  2. var path = require('path');
  3. var deleteQueue = [];
  4. /**读取文件夹内容 */
  5. function readDir(dirPath, onComp) {
  6. var callback = onComp ? onComp : function (err, files) {
  7. if (err) {
  8. console.error(err);
  9. } else {
  10. console.log(files);
  11. console.log("文件夹读取成功!");
  12. }
  13. };
  14. fs.readdir(dirPath, callback);
  15. }
  16. /**同步读取文件内容 */
  17. function readDirSync(dirPath) {
  18. var files = fs.readdirSync(dirPath);
  19. if(files.length <= 0){
  20. console.warn(dirPath+" 中没有文件!");
  21. }else{
  22. console.log(files);
  23. }
  24. return files;
  25. }
  26. /**创建新文件夹若存在则创建失败 */
  27. function createDir(dirPath) {
  28. fs.mkdir(dirPath, function (err) {
  29. if (err) {
  30. console.error(err);
  31. } else {
  32. console.log("文件夹创建成功!");
  33. }
  34. });
  35. }
  36. /**同步创建新文件夹若存在则创建失败 */
  37. function createDirSync(dirPath) {
  38. fs.mkdirSync(dirPath);
  39. console.log("创建成功!");
  40. }
  41. /**删除空文件夹若不为空则失败 */
  42. function deleteEmptyDir(dirPath,onComp) {
  43. var callback = onComp ? onComp : function (err) {
  44. if (err) {
  45. console.error(err);
  46. } else {
  47. console.log("文件夹删除成功!");
  48. }
  49. };
  50. fs.rmdir(dirPath,callback);
  51. }
  52. /**同步删除空文件夹若不为空则失败 */
  53. function deleteEmptyDirSync(dirPath,onComp) {
  54. fs.rmdirSync(dirPath);
  55. onComp && onComp();
  56. // console.log("文件夹删除成功!");
  57. }
  58. /**同步删除队列中的文件夹 */
  59. function deleteDirQueue() {
  60. var len = deleteQueue.length;
  61. for(var i = 0; i < len;i++){
  62. deleteEmptyDirSync(deleteQueue[i]);
  63. }
  64. }
  65. /** 同步删除文件夹及其中的文件 */
  66. function deleteDirAndFileSync(dirPath,deleteSelf = false) {
  67. var files = readDirSync(dirPath);
  68. var len = files.length;
  69. for(var i = 0;i < len;i++){
  70. var file = files[i];
  71. let filePath = path.resolve(dirPath, file);//单个文件绝对路径
  72. var state = fs.statSync(filePath);//单个文件的状态
  73. if(state.isDirectory()){//如果是文件夹
  74. deleteDirAndFileSync(filePath,true);
  75. }else{//否则是文件,直接删除
  76. deleteFileSync(filePath);
  77. }
  78. }
  79. deleteSelf && deleteQueue.push(dirPath);
  80. }
  81. /**读取文件 */
  82. function readFile(filePath) {
  83. return fs.readFile(filePath, function (err) {
  84. if (err) {
  85. console.error(err);
  86. } else {
  87. console.log("文件读取成功!");
  88. }
  89. });
  90. }
  91. /**写入文件若文件不存在则创建文件并写入 */
  92. function writeFile(filePath, fileData) {
  93. fs.writeFile(filePath, fileData, function (err) {
  94. if (err) {
  95. console.error(err);
  96. } else {
  97. // console.log("文件写入成功!");
  98. }
  99. });
  100. }
  101. /**删除文件 */
  102. function deleteFile(filePath) {
  103. fs.unlink(filePath, function (err) {
  104. if (err) {
  105. console.error(err);
  106. } else {
  107. console.log("文件删除成功!");
  108. }
  109. });
  110. }
  111. /**同步删除文件 */
  112. function deleteFileSync(filePath) {
  113. fs.unlinkSync(filePath);
  114. console.log(filePath + " 删除成功!");
  115. }
  116. module.exports = {
  117. readDir,
  118. readDirSync,
  119. createDir,
  120. createDirSync,
  121. deleteEmptyDir,
  122. deleteEmptyDirSync,
  123. readFile,
  124. writeFile,
  125. deleteFile,
  126. deleteFileSync,
  127. deleteDirAndFileSync,
  128. deleteDirQueue,
  129. deleteQueue
  130. }