appDelDir.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import dirReader from "./dirReader"
  2. /**
  3. * 遍历删除整个文件夹,以“/”结尾
  4. */
  5. export default function appDelDir(path, needDelSelf = true) {
  6. return new Promise(async (yes, err) => {
  7. let dirList = await dirReader.getDirFileList(path)
  8. for (let i = 0; i < dirList.length; i++) {
  9. let item = dirList[i];
  10. try {
  11. if (item.type == "dir") {
  12. let info = await getMeteInfo(path + item.name + "/")
  13. if (
  14. info.directoryCount > 0
  15. || info.fileCount > 0
  16. ) {
  17. await appDelDir(path + item.name + "/")
  18. } else {
  19. await delDir(path + item.name + "/")
  20. }
  21. } else {
  22. await delFile(path + item.name)
  23. }
  24. } catch (error) { }
  25. }
  26. try {
  27. if (needDelSelf) {
  28. await delDir(path)
  29. }
  30. } catch (error) { }
  31. yes()
  32. })
  33. }
  34. function delFile(path) {
  35. return new Promise((yes, err) => {
  36. plus.io.resolveLocalFileSystemURL(
  37. path,
  38. (entry) => {
  39. entry.remove(
  40. yes,
  41. err
  42. )
  43. },
  44. err
  45. );
  46. })
  47. }
  48. function delDir(path) {
  49. return new Promise((yes, err) => {
  50. plus.io.resolveLocalFileSystemURL(
  51. path,
  52. (entry) => {
  53. entry.remove(
  54. yes,
  55. err
  56. )
  57. },
  58. err
  59. );
  60. })
  61. }
  62. /**
  63. * 获取文件夹内信息
  64. * @returns {Promise<PlusIoMetadata>}
  65. */
  66. function getMeteInfo(path) {
  67. return new Promise((yes, err) => {
  68. plus.io.resolveLocalFileSystemURL(
  69. path,
  70. (entry) => {
  71. if (entry.isDirectory) {
  72. entry.getMetadata((metadata) => {
  73. yes(metadata)
  74. }, err)
  75. } else {
  76. err()
  77. }
  78. },
  79. err
  80. );
  81. })
  82. }