文章目录
省流版
作者版本:Android 11及以上
主要是发现网上没有完整的、能跑的代码,不知道怎么回事,GPT给我重写的。我只能保证这个代码尊嘟能跑,不像其他的缺胳膊少腿的。
asserts
贴一下结果:
boolean isAssertFileExists(String filename) {
AssetManager assetManager = getActivity().getAssets();
try {
String[] files = assetManager.list("");
for (String file : files) {
if (file.equals(filename)) {
return true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
需要引入的头文件:
import java.io.IOException;
import android.content.res.AssetManager;
可以看到能正常判断:
其他外部文件或者data下的文件
如果是常规文件只需要用new File(filepath).exists()
就行了。写成函数如下:
boolean checkFileExists(String dirname, String filename) {
File file = new File(dirname, filename);
return file.exists();
}
有个人写了但是他那个代码没有getActivity()导致getAssets没定义,见android判断asses文件是否存在。
如果找不到自己的软件包存的文件的路径,可以看看这篇博客Android 保存文件路径方法。
详细解释版
Android 11及以上版本文件存在性检查详解
在Android开发中,检查文件是否存在是一个常见的需求。特别是在处理如assets文件夹中的资源文件或其他外部文件时,确保文件的可用性至关重要。以下是在Android 11及以上版本中如何检查文件是否存在的两种方法。
方法一:检查assets文件夹中的文件
assets文件夹是Android项目中用于存放原始文件的特殊目录。检查assets中的文件是否存在需要使用AssetManager
类。以下是一个示例函数,该函数接受一个文件名作为参数,并返回一个布尔值表示文件是否存在:
import java.io.IOException;
import android.content.res.AssetManager;
public boolean isAssertFileExists(String filename) {
AssetManager assetManager = getActivity().getAssets();
try {
String[] files = assetManager.list("");
for (String file : files) {
if (file.equals(filename)) {
return true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
方法二:检查其他外部文件或data目录下的文件
对于不在assets文件夹中的文件,如存储在外部存储或应用的data目录下的文件,可以使用File
类来检查文件是否存在。以下是一个示例函数,该函数接受目录和文件名作为参数,并返回一个布尔值表示文件是否存在:
public boolean checkFileExists(String dirname, String filename) {
File file = new File(dirname, filename);
return file.exists();
}
注意事项
- 当使用
getActivity().getAssets()
时,请确保您处于Fragment或Activity的上下文中,否则getActivity()
方法将不可用。 - 在处理文件和目录路径时,请确保您具有正确的文件权限和访问权限。
额外资源
- 如果您找不到自己的软件包存储的文件的路径,可以查阅这篇博客:Android 保存文件路径方法。
希望这些信息能帮助您在Android开发中更有效地处理文件存在性检查的问题。
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/136439539
。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。