我想列出包含在名为“subDir”的assets子目录中的文件,并使用以下代码。但是,如果我设置dirFrom =“”(空),则正确列出资产中的所有文件夹。但是,对于dirFrom =“/ subDir /”,不起作用。我已经尝试了“subDir /”和相同的结果。是否有必要在清单中声明权限?谢谢。
private void copyFiles(String dirFrom, String dirTo) throws IOException {
AssetManager am = getAssets();
String fileList[] = am.list(dirFrom);
if (fileList != null)
{
for ( int i = 0;i<fileList.length;i++)
{
Log.d("",fileList[i]);
}
}
}
答案 0 :(得分:1)
AssetManager.list(String)采用“资产内的相对路径”。
Android / Java通常希望路径最终没有'/'
。
此外,“相对”意味着一开始不应该有'/'
- 否则它可能是文件系统根目录中的路径。
仅使用"subDir"
或"subDir/subsubDir"
即可。
答案 1 :(得分:0)
zapl的回答是正确的,但附加信息:如果你想复制文件,例如复制到SD卡,你必须用斜杠声明你的InputStream:
InputStream in = assetManager.open("subDir/"+filename);
这是我从子文件夹中复制文件时遇到的问题。我最初的计划是直接从资产文件夹复制文件,这有效,但给了我一些IOExceptions。在资产文件夹中有一些目录“webkit”,“sound”,“images”和另一个我无法记住的目录......但我还没有看到它们。这必须是Android内部我不理解的东西。但为了摆脱这个,我把我的文件放在一个子文件夹中。我知道这是一个旧线程,但我把这些信息放在这个帖子中只是为了帮助其他有类似问题的人。