首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >鸿蒙NEXT版仿抖音快手App的把相册视频复制到沙箱

鸿蒙NEXT版仿抖音快手App的把相册视频复制到沙箱

作者头像
aqi00
发布2025-08-03 14:06:45
发布2025-08-03 14:06:45
1632
举报
文章被收录于专栏:老欧说安卓老欧说安卓

上一节我们结合Core File Kit和Image Kit实现了位图数据转存为图片文件的功能,当时图片文件位于应用的沙箱目录下。应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为“应用沙箱目录”。

不光图片要保存应用沙箱目录下,凡是App要读写的所有文件都必须放在沙箱目录,包括网络文件下载的保存目录,以及待上传文件的所在目录,都要求位于应用的沙箱目录。那么短视频App制作的自媒体视频,也得先从相册路径复制到应用的沙箱目录,才能向服务器提交上传。那么根据沙箱文件的操作规范,可将完整的文件复制过程划分为下列三个步骤:

一、各自打开复制操作的源文件和目标文件

鸿蒙把文件操作能力封装到了Core File Kit(文件基础服务),并通过fileIo工具来调用文件操作函数。为此要在代码开头添加下面的导包语句,表示引入文件操作工具fileIo:

代码语言:javascript
复制
import { fileIo } from '@kit.CoreFileKit';

鸿蒙把创建文件和打开文件合并到了一起,调用open函数或者openSync函数,即可实现创建并打开文件的功能。注意,在调用open或者openSync的时候,模式参数要填“fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE”,表示指定路径若不存在文件就创建新文件,若已存在文件就打开原文件。示例代码如下:

代码语言:javascript
复制
let srcFile = fileIo.openSync(path.toString());
let dstFile = fileIo.openSync(dstPath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);

二、把文件从源路径复制到应用沙箱的目标路径

调用fileIo工具的copyFile函数或者copyFileSync函数,即可实现复制文件的功能。示例代码如下:

代码语言:javascript
复制
fileIo.copyFileSync(srcFile.fd, dstFile.fd);

三、复制完毕,关闭第一步的源文件和目标文件

调用fileIo工具的close函数或者closeSync函数,即可实现关闭文件的功能。示例代码如下:

代码语言:javascript
复制
fileIo.closeSync(srcFile);
fileIo.closeSync(dstFile);

综合上述三个步骤,可编写把文件复制到沙箱目录的代码框架如下所示:

代码语言:javascript
复制
copyFile(path: string) {
  let fileName = path.toString().split('/').pop() as string;
  let dstPath = `${this.context.cacheDir}/${fileName}`
  let srcFile = fileIo.openSync(path.toString());
  let dstFile = fileIo.openSync(dstPath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
  fileIo.copyFileSync(srcFile.fd, dstFile.fd);
  fileIo.closeSync(srcFile);
  fileIo.closeSync(dstFile);
}

下一篇文章会介绍如何呈现正在上传文件的界面等待效果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老欧说安卓 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档