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

fix:复制文件

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