Как проверить, что файл существует внутри zip-архива?

Как проверить, существует ли файл внутри zip-архива?
Например, проверить, содержит ли app.apk classes.dex.
Я хочу найти решение, использующее Java NIO.2 Path и по возможности не распаковывающее весь архив.

Я пробовал, и это не сработало:

Path classesFile = Paths.get("app.apk", "classes.dex");  // apk file with classes.dex
if (Files.exists(apkFile))  // false!
    ...

person naXa    schedule 07.09.2015    source источник


Ответы (2)


Мое решение:

Path apkFile = Paths.get("app.apk");
FileSystem fs = FileSystems.newFileSystem(apkFile, null);
Path dexFile = fs.getPath("classes.dex");
if (Files.exists(dexFile))
    ...
person naXa    schedule 07.09.2015

Вы можете попробовать ZipInputStream. Использование выглядит следующим образом: -

    ZipInputStream zip = new ZipInputStream(Files.newInputStream(
            Paths.get(
                    "path_to_File"),
            StandardOpenOption.READ));
    ZipEntry entry = null;

    while((entry = zip.getNextEntry()) != null){
        System.out.println(entry.getName());
    }
person Shubham Chaurasia    schedule 07.09.2015