提交 767a4a6a authored 作者: caodi\cd's avatar caodi\cd

fix:复制文件

上级 1a734ad3
......@@ -487,78 +487,95 @@ function copySingleImage(sourcePath, targetDirEntry) {
);
});
}
// 删除文件夹中所有文件
// 删除文件夹中所有文件(即使部分失败也会继续执行)
export function deleteAllFilesInDirectory(directoryPath) {
// 请求文件系统
return new Promise((resolve, reject) => {
return new Promise((resolve) => {
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS,
function (fs) {
// 获取指定文件夹路径的目录条目
(fs) => {
fs.root.getDirectory(
directoryPath,
{ create: false },
function (dirEntry) {
// 创建一个空的目录读取器
var directoryReader = dirEntry.createReader();
// 读取目录中的所有文件和子目录
(dirEntry) => {
const directoryReader = dirEntry.createReader();
directoryReader.readEntries(
function (entries) {
// 目标文件夹没有内容,直接返回
(entries) => {
if (!entries.length) {
return resolve();
return resolve({
success: true,
message: "目录为空",
results: []
});
}
let copyNum = 0;
const results = [];
let completedCount = 0;
const checkCompletion = () => {
if (completedCount === entries.length) {
resolve({
success: results.every(r => r.success),
message: "操作完成",
results: results
});
}
};
// 遍历文件和子目录
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
entries.forEach((entry) => {
if (entry.isFile) {
// 确保是文件
// 删除文件
entry.remove(
function () {
++copyNum;
if (copyNum == entries.length) {
resolve();
}
() => {
results.push({
name: entry.name,
success: true
});
completedCount++;
checkCompletion();
},
function (error) {
console.error("deleteAllFilesInDirectory:", error);
reject({
...FILE_ENUM.deleteFileError,
(error) => {
console.warn(`删除失败: ${entry.name}`, error);
results.push({
name: entry.name,
success: false,
error: error.message || "未知错误"
});
completedCount++;
checkCompletion();
}
);
} else {
// 如果是子目录,跳过(或可以递归删除)
completedCount++;
checkCompletion();
}
}
});
},
function (error) {
console.error("deleteAllFilesInDirectory:", error);
reject({
...FILE_ENUM.readDirectoryError,
(error) => {
console.error("读取目录失败:", error);
resolve({
success: false,
message: "读取目录失败",
error: error
});
}
);
},
function (error) {
console.error("deleteAllFilesInDirectory:", error);
reject({
...FILE_ENUM.getDirectoryError,
(error) => {
console.error("获取目录失败:", error);
resolve({
success: false,
message: "目录不存在",
error: error
});
}
);
},
function (error) {
console.error("deleteAllFilesInDirectory:", error);
reject({
...FILE_ENUM.fileSystemError,
(error) => {
console.error("文件系统错误:", error);
resolve({
success: false,
message: "文件系统访问失败",
error: error
});
}
);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论