簡體   English   中英

如何檢查該文件是否存在於 zip 存檔中?

[英]How to check that file exists inside a zip archive?

如何檢查該文件是否存在於 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!
    ...

我的解決方案是:

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

您可以嘗試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());
    }

另一個例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM