环境:通过Android studio打包的apk,使用卓易通的方式安装在鸿蒙6的系统上。
问题描述:应用在查找文件夹中的文件时有时能查找到有时无法查找到文件,甚至创建文件失败。
猜想:在鸿蒙5以下运行一切正常。
查找文件的代码:
AbstructProvider fileProvider = new FileProvider(context);
List<?> list = fileProvider.getList("%" + suffixWithDot);
//查询指定文件路径
if(fileName != null && !fileName.equals("")){
for (int i = 0, len = DataUtil.getLength(list); i < len; i++) {
File file = (File) list.get(i);
if (file != null && file.exists() && file.getAbsolutePath().substring(0,file.getAbsolutePath().lastIndexOf("/")).equals(fileName+suffixWithDot)) {
filePathList.add(file.getAbsolutePath());
}
}
return filePathList;
}
private List<String> listDocxFile(String path) {
List<String> result = new ArrayList<>();
File file = new File(path);
if (file.isDirectory()) {
File[] files = file.listFiles();
assert files != null;
for (File fileIndex : files) {
//如果这个文件是目录,则进行递归搜索
if (!fileIndex.isDirectory()) {
//如果文件是普通文件,则将文件句柄放入集合中
String suffix = fileIndex.getName().substring(fileIndex.getName().lastIndexOf(".") + 1);
if (suffix.equals("docx") || suffix.equals("doc") || suffix.equals("xlsx") || suffix.equals("xls")) {
result.add(path + fileIndex.getName());
}
}
}
}
return result;
}
创建目录的代码:
public static boolean createOrExistsDir(File file) {
// 如果存在,是目录则返回true,是文件则返回false,不存在则返回是否创建成功
return file != null && (file.exists() ? file.isDirectory() : file.mkdirs());
}