从apk扩展文件中获取文件列表

3
我如何在扩展apk文件中获取特定文件夹的文件列表? 对于资产,我已经这样做了:
String[] filesList = getAssets().list("some/path");

但是对于APK扩展文件,我只有

getExpansionFile().getAllEntries();

查询所有文件示例。但我需要移动到文件夹,例如移动到folder1,显示其中的文件。然后移动到子文件夹subfolder1(位于folder1中),并显示那里的文件列表。由于文件可能会更改,因此我不能硬编码它。

还有一个问题:我如何从apk扩展文件中检索某个文件夹中的文件?


期待这个也 :) - mrahmat
1个回答

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]);
    }
}

但是,如果有人能分享更好的解决方案或发现我的实现缺陷,我将不胜感激!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接