HarmonyOS鸿蒙Next中使用listFile时会将非图片类型也获取到
HarmonyOS鸿蒙Next中使用listFile时会将非图片类型也获取到
我已经填了匹配后缀了,为什么还会返回同级其他目录
更多关于HarmonyOS鸿蒙Next中使用listFile时会将非图片类型也获取到的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
这个问题我之前发过帖子,因为api中已经说了:ListFileOptions
的recursion
属性:返回当前目录下满足过滤要求的文件名及文件夹名。
更多关于HarmonyOS鸿蒙Next中使用listFile时会将非图片类型也获取到的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我的解决办法是:suffix、mimeType、displayName 三个属性一起用,其实如果你的名称确保都是.png
结尾的话,只使用displayName: [ ‘*.png’ ] 也可以。
在HarmonyOS Next中,使用listFile
获取目录文件时会返回所有文件类型。若需仅获取图片文件,可通过文件扩展名过滤。示例代码:
import fileio from '@ohos.fileio';
let dir = fileio.opendir(path);
let entry;
while ((entry = dir.readSync()) !== undefined) {
if (entry.name.endsWith('.jpg') ||
entry.name.endsWith('.png')) {
// 处理图片文件
}
}
dir.closeSync();
支持过滤的图片扩展名包括.jpg
/.png
/.webp
等,根据实际需求调整判断条件。
在HarmonyOS Next中,listFile方法默认会返回目录下所有文件和子目录。要仅获取图片文件,需要结合文件过滤器和后缀名检查。建议修改代码如下:
- 使用FileFilter进行过滤:
File[] imageFiles = dir.listFiles((file) -> {
String name = file.getName().toLowerCase();
return name.endsWith(".jpg") || name.endsWith(".png") || name.endsWith(".jpeg");
});
- 如果仍获取到其他目录,可能是路径问题,建议:
- 检查dir路径是否正确
- 确保只扫描目标目录,不递归子目录
- 添加isFile()判断:
file.isFile() && (name.endsWith(".jpg")...)
- 对于更精确的控制,可以使用Files.walk()配合过滤条件。