![](https://s5-media.51cto.com/ost/pc/static/noavatar.gif)
回复
【本文正在参加 2023「盲盒」+码有奖征文活动】 https://ost.51cto.com/posts/25284
@toc
无论是官方文档,还是其他有关沙箱的技术讲解中,关于隔离机制、访问关系和对应路径等有关图文内容都比较多且对于初学者不容易理解,其实对于初学者来说,在实际应用开发过程中,有些接口需要传递沙箱文件路径参数,你只需要看懂下面的这些即可,至于更深层次的理解,可以随着实践逐步再逐步去学习了解。
真实存储路径
实际对应的沙箱路径
ohos.permission.INTERNET
request.downloadFile
下载文件downloadTask.on('complete'
回调中处理下载完成之后的操作import request from '@ohos.request';
import common from '@ohos.app.ability.common';
......
downloadFile(fileUrl) {
let downloadTask;
// 下载路径,示例: /data/storage/el2/base/haps/entry/files/test.png
let context = getContext(this) as common.UIAbilityContext;
let filePath = context.filesDir + '/test.hap";
// 下载文件
try {
request.downloadFile(context, {
url: '待下载的文件URL',
filePath: filePath
}).then((data) => {
downloadTask = data;
// 监听下载完成
downloadTask.on('complete', function callback() {
console.info('下载完成');
// TODO ...
});
// 监听下载失败
downloadTask.on('fail', function callBack(err) {
console.info('下载失败:' + err);
});
}).catch((err) => {
console.error('下载失败:' + JSON.stringify(err));
})
} catch (err) {
console.error('err.code : ' + err.code + ', err.message : ' + err.message);
}
}
fs.listFile
读取文件列表,第一个参数为文件夹的应用沙箱路径,第二个为文件过滤选项filenames
,就是读取到的所有文件名import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
......
let context = getContext(this) as common.UIAbilityContext;
let filePath = context.filesDir;
let options = {
"recursion": false,
"listNum": 0,
"filter": {
"suffix": [".jpg", ".png"]
}
};
fs.listFile(filePath, options).then((filenames) => {
for (let i = 0; i < filenames.length; i++) {
console.info("fileName: %s", filenames[i]);
}
}).catch((err) => {
console.info("读取异常: " + err.message + ", error code: " + err.code);
});