如何在expension apk文件中获取某些文件夹的文件列表? 对于资产我做了:
String[] filesList = getAssets().list("some/path");
但是对于APK expnsion文件我只有
getExpansionFile().getAllEntries();
后退所有文件。 但我需要移动文件夹,例如移动到folder1,显示放在里面的文件。然后转到subfolder1(放在folder1中)并在那里显示fileslist。我不能硬编码,因为文件可能会被更改。
再次:我如何在apk扩展文件中检索某些文件夹的文件?
答案 0 :(得分:2)
最后,我编写了自己的实现。
public class FileStructure {
public final String pathName;
// or TreeMap if order matter
public HashMap<String, FileStructure> files;
public FileStructure(String path){
this.pathName = path;
files = new HashMap<String, FileStructure>();
}
}
使用java.util.zip.ZipFile获取apk扩展文件条目:
ZipFile zf = new ZipFile(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/Android/obb/" + getPackageName()
+ "/main.1." + getPackageName() + ".obb");
Enumeration zipEntries = zf.entries();
String fname;
while (zipEntries.hasMoreElements()) {
fname = ((ZipEntry) zipEntries.nextElement()).getName();
addToRoot(fname, root);
}
并在FileStructure类中解析它
private void addToRoot(String fname, FileStructure root) {
String[] directories = fname.split(File.separator);
FileStructure current = root;
for (int i = 0; i < directories.length; i++) {
if (!current.files.containsKey(directories[i])) {
current.files.put(directories[i], new FileStructure(directories[i]));
}
current = current.files.get(directories[i]);
}
}
但是,如果有人分享一些更好的解决方案或发现我的实施缺陷,我将不胜感激!