HarmonyOS 鸿蒙Next 如何自动获取download或其他目录下文件夹下的图片
HarmonyOS 鸿蒙Next 如何自动获取download或其他目录下文件夹下的图片
不在应用沙箱下面的文件,不可能一下读取大量图片,要是能有一个公共目录文件夹的读权限,我的应用早就100%重写完成了,无限期搁置了,看后面版本给不给读权限了,不给我重新优化安卓代码,系统都不会升next
更多关于HarmonyOS 鸿蒙Next 如何自动获取download或其他目录下文件夹下的图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
图片不要放到rawfile下而是放到resfile下,就可以使用fs的能力了
参考链接资源分类与访问-基础入门 - 华为HarmonyOS开发者
let pathDir = getContext().resourceDir
let listFileOption: ListFileOptions = {
recursion: false,
listNum: 0
}
fs.listFile(pathDir, listFileOption).then(async (filenames: Array<string>) => {
console.info("listFile succeed");
console.log(filenames.length.toString())
console.log(json.stringify(filenames))
for (let i = 0; i < filenames.length; i++) {
let imageUri = pathDir + '/' + filenames[i]
let file = fs.openSync(imageUri, fs.OpenMode.READ_ONLY);
const imageSource: image.ImageSource = image.createImageSource(file.fd)
let pixelMap: image.PixelMap = imageSource.createPixelMapSync()
if (pixelMap != undefined) {
let imageInfo: image.ImageInfo = pixelMap.getImageInfoSync()
console.log(JSON.stringify(imageInfo))
} else {
console.log('pixelMap获取失败')
}
}
}).catch((err: BusinessError) => {
console.error("list file failed with error message: " + err.message + ", error code: " + err.code);
});
在HarmonyOS鸿蒙Next系统中,自动获取download
或其他目录下文件夹中的图片,可以通过文件访问API实现。以下是一个简要的方法:
-
权限申请:首先,确保你的应用已经申请并获得了访问存储的权限。在
config.json
文件中添加相关权限声明,例如ohos.permission.READ_EXTERNAL_STORAGE
。 -
路径构建:构建目标文件夹的路径。对于
download
目录,可以使用系统提供的目录API,如FileSystemManager.getDownloadsDir()
获取下载目录路径。 -
文件遍历:使用
File
或Directory
类来遍历目录,筛选出图片文件(通常通过文件扩展名,如.jpg
,.png
等)。 -
读取文件:对于每个筛选出的文件,可以使用文件读取API来获取文件内容或文件信息。
示例代码(伪代码):
let fileSysManager = file.getFileSystemManager();
let downloadsDir = fileSysManager.getDownloadsDir();
function getImagesInDir(dirPath) {
// 遍历目录,筛选图片文件
// 返回图片文件列表
}
let images = getImagesInDir(downloadsDir);
注意:实际开发中,需要处理文件访问异常,确保代码健壮性。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html