Android 遍历资产子文件夹
我需要一些帮助。我需要遍历assets文件夹,找到所有文件和子文件夹,并对它们进行处理。 例如我已经在资产文件夹中创建了文件夹“myicons”。但是这个文件夹(myicons)包括其他包含图标的文件夹。看起来像 /myicons/buttons/playbt.ico、/myicons/buttons/stopbt.ico、, /myicons/shapes/square.ico 等等。 所以我需要遍历每个子文件夹,但它不起作用<代码>资产管理器。列表(路径)仅返回文件。 请建议如何解决这个问题。例如,如果Android 遍历资产子文件夹,android,Android,我需要一些帮助。我需要遍历assets文件夹,找到所有文件和子文件夹,并对它们进行处理。 例如我已经在资产文件夹中创建了文件夹“myicons”。但是这个文件夹(myicons)包括其他包含图标的文件夹。看起来像 /myicons/buttons/playbt.ico、/myicons/buttons/stopbt.ico、, /myicons/shapes/square.ico 等等。 所以我需要遍历每个子文件夹,但它不起作用资产管理器。列表(路径)仅返回文件。 请建议如何解决这个问题。例如,
getFromAssets(getAsset(),“myicons”)代码>
void getFromAssets(AssetManager管理器,字符串路径){
试一试{
字符串列表[]=管理列表(路径);
如果(列表!=null)
对于(int i=0;我可能会重复您正在查找的内容,这称为递归,这实际上可以被视为任何关于迭代目录及其所有子目录的问题的重复。我知道我应该使用递归,但它不列出文件夹,只列出文件!!!您不能对资产使用类文件,因此您可以不能使用File.isDirectory()。相反,您必须创建自己的isDirectory()。文件夹未列出是错误的。它们也会列出,只是您现在不知道它是文件夹还是文件。列出资产中所有文件夹和文件的代码以前已在此网站上发布过。只需搜索。您自己的isDirectory的代码也是。只需搜索。在进行一些研究后,greenapps是正确的,这是不正确的使用方式资产。我发现的一个解决方法是调用mgr.list(list[I])
并检查长度。如果它包含文件,它肯定是一个目录。因此,请尝试将您的If语句更改为If(mgr.list(list[I])。长度==0)
void getFromAssets (AssetManager mgr, String path) {
try {
String list[] = mgr.list(path);
if (list != null)
for (int i=0; i<list.length; ++i)
{
File file = new File(list[i]);
if (file.isDirectory()) {
Log.d("Assets:",list[i]+ "is Directory");
}
else {
Log.d("Assets:",list[i]+ "is File");
}
}
} catch (IOException e) {
Log.v("List error:", "can't list" + path);
}
}