HarmonyOS 鸿蒙Next中怎么删除图片

HarmonyOS 鸿蒙Next中怎么删除图片

我在保存图片之前,先进行删除了同样路径名称的图片fs.unlinkSync(path),但是好像没生效,导致保存了好多张一模一样的图片,怎么办

static pixelMapToFile(pixelMap: image.PixelMap | undefined, path: string,
  isSaveGallery?: boolean, context?: Context): Promise<void> {

  const imagePacker = image.createImagePacker();
  fs.unlinkSync(path); //先删除
  let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  let packOpts : image.PackingOption = { format: 'image/jpeg', quality: 98 };
  return imagePacker.packToFile(pixelMap, file.fd, packOpts).then(async () => {
    fs.closeSync(file.fd);
    if (isSaveGallery === true) {
      let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
      let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest =
        photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, path);
      await phAccessHelper.applyChanges(assetChangeRequest);
    }
    AppUtils.log('保存图片成功:' + path)
  }).catch((error: BusinessError) => {
    AppUtils.error('保存图片failed, error: ' + JSON.stringify(error));
  });
}

更多关于HarmonyOS 鸿蒙Next中怎么删除图片的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中删除图片有两种方法:

  1. 通过图库删除: 打开图库应用,长按选中要删除的图片,点击底部"删除"按钮确认即可。

  2. 通过文件管理删除: 打开文件管理,进入图片所在目录,长按选中文件,点击"删除"按钮。

删除操作会将图片移入回收站,30天后自动永久删除。如需立即永久删除,需在删除后进入回收站二次删除。

更多关于HarmonyOS 鸿蒙Next中怎么删除图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,您遇到的问题可能是由于文件删除操作未正确处理导致的。以下是解决方案:

  1. 检查文件是否存在再删除:
if (fs.accessSync(path)) {
  fs.unlinkSync(path);
}
  1. 使用try-catch处理删除异常:
try {
  fs.unlinkSync(path);
} catch (err) {
  // 文件不存在或其他错误
}
  1. 确保文件路径正确:
  • 使用绝对路径而非相对路径
  • 检查路径字符串是否正确转义
  1. 文件操作时序问题建议: 在删除后添加短暂延迟:
fs.unlinkSync(path);
await new Promise(resolve => setTimeout(resolve, 100)); // 100ms延迟
  1. 文件句柄管理: 确保在操作完成后关闭所有文件句柄,避免资源占用导致操作失败。

如果问题仍然存在,建议检查文件系统权限是否配置正确,并确认目标路径是否可写。

回到顶部