fileStorage.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. function setFileStorage(path, seek, writeData) {
  2. return new Promise((resolve, reject) => {
  3. plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {
  4. fs.root.getFile(path, {
  5. create: true
  6. }, fileEntry => {
  7. fileEntry.file(file => {
  8. fileEntry.createWriter(writer => {
  9. plus.nativeUI.showWaiting("正在保存文件信息,请勿操作!");
  10. writer.seek(seek);
  11. const writeDataTemp = JSON.stringify(writeData, null,
  12. "\r").replace(/[\r]/g, "");
  13. writer.write(writeDataTemp);
  14. writer.onerror = function() {
  15. plus.nativeUI.closeWaiting();
  16. plus.nativeUI.toast("保存失败, 请重新操作", {
  17. background: "rgba(255, 255, 255, 0.6)",
  18. });
  19. reject("保存失败, 请重新操作");
  20. }
  21. writer.onwrite = function() {
  22. plus.nativeUI.closeWaiting();
  23. plus.nativeUI.toast("文件已保存", {
  24. background: "rgba(255, 255, 255, 0.6)",
  25. });
  26. }
  27. }, e => {
  28. plus.nativeUI.toast("启动文件保存流失败,请检查android版本!", {
  29. background: "rgba(255, 255, 255, 0.6)",
  30. });
  31. reject(e);
  32. })
  33. })
  34. }, e => {
  35. plus.nativeUI.toast("文件获取失败,请检查应用权限!", {
  36. background: "rgba(255, 255, 255, 0.6)",
  37. });
  38. reject(e);
  39. })
  40. })
  41. })
  42. }
  43. function getFileStorage(path) {
  44. return new Promise((resolve, reject) => {
  45. plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {
  46. fs.root.getFile(path, {
  47. create: false
  48. }, fileEntry => {
  49. fileEntry.file(function(file) {
  50. let fileReader = new plus.io.FileReader();
  51. fileReader.readAsText(file, "utf-8");
  52. fileReader.onerror = e => {
  53. // plus.nativeUI.toast("获取文件失败 " + e, {
  54. // background: "rgba(255, 255, 255, 0.6)",
  55. // });
  56. // fileReader.abort(); // 终止读取
  57. // fileReader = null; // 释放引用
  58. reject("获取文件失败");
  59. };
  60. // fileReader.onload = e => {
  61. // const result = e.target.result; // 先保存结果
  62. // fileReader.abort(); // 终止读取
  63. // fileReader = null; // 释放引用
  64. // resolve(result); // 再 resolve
  65. // };
  66. fileReader.onload = e => {
  67. // fileReader.abort(); // 终止读取
  68. // fileReader = null; // 释放引用
  69. resolve(e.target.result);
  70. };
  71. // plus.nativeUI.confirm("检测到本地存在已保存的服务器数据" + file.size +
  72. // "byte,是否读取?", ret => {
  73. // if (ret?.index == 0) {
  74. // let fileReader = new plus.io.FileReader();
  75. // fileReader.readAsText(file, "utf-8");
  76. // fileReader.onerror = e => {
  77. // plus.nativeUI.toast("获取文件失败 " + e, {
  78. // background: "rgba(255, 255, 255, 0.6)",
  79. // });
  80. // reject("获取文件失败");
  81. // };
  82. // fileReader.onload = e => {
  83. // resolve(e.target.result);
  84. // };
  85. // } else {
  86. // resolve(null);
  87. // }
  88. // })
  89. });
  90. }, e => {
  91. plus.nativeUI.toast("文件获取失败,请检查应用权限!", {
  92. background: "rgba(255, 255, 255, 0.6)",
  93. });
  94. reject(e);
  95. })
  96. })
  97. })
  98. }
  99. export {
  100. setFileStorage,
  101. getFileStorage
  102. }