如何检查该文件是不是存在于 zip 存档中?

Posted

技术标签:

【中文标题】如何检查该文件是不是存在于 zip 存档中?【英文标题】:How to check that file exists inside a zip archive?如何检查该文件是否存在于 zip 存档中? 【发布时间】:2015-12-02 20:22:48 【问题描述】:

如何检查 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!
    ...

【问题讨论】:

【参考方案1】:

我的解决办法是:

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

【讨论】:

【参考方案2】:

你可以试试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());
    

【讨论】:

【参考方案3】:

另一个例子:

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

【讨论】:

以上是关于如何检查该文件是不是存在于 zip 存档中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中的 WinRAR、7Zip、Zip、Tar、Winzip 中检查文件是不是存在

Java中如何检查文件是不是存在于目录中

如何检查文件夹是不是存在于垃圾箱中或不在谷歌驱动器中?

如何使用 Spark/Scala 在 HDFS 上编写/创建 zip 文件?

如何检查 PHP 中是不是加密的 Zip 存档?

如何检查远程文件是不是存在于代理后面