如何检查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!
...
答案 0 :(得分:2)
我的解决方案是:
Path apkFile = Paths.get("app.apk");
FileSystem fs = FileSystems.newFileSystem(apkFile, null);
Path dexFile = fs.getPath("classes.dex");
if (Files.exists(dexFile))
...
答案 1 :(得分:1)
您可以尝试 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());
}
答案 2 :(得分:0)
另一个例子:
try {
//open the source zip file
ZipFile sourceZipFile = new ZipFile(f);
//File we want to search for inside the zip file
String searchFileName = "TEST.TXT";
//get all entries
Enumeration e = sourceZipFile.entries();
boolean found = false;
System.out.println("Trying to search " + searchFileName + " in " + sourceZipFile.getName());
while(e.hasMoreElements())
{
ZipEntry entry = (ZipEntry)e.nextElement();
if(entry.getName().indexOf(searchFileName) != -1)
{
found = true;
System.out.println("Found " + entry.getName());
}
}
if(found == false)
{
System.out.println("File " + searchFileName + " Not Found inside ZIP file " + sourceZipFile.getName());
}
//close the zip file
sourceZipFile.close();
}
catch(IOException ioe) {
System.out.println("Error opening zip file" + ioe);
}