【问题标题】:Get a File or URI object for a file inside an archive with Java?使用 Java 获取存档中文件的文件或 URI 对象?
【发布时间】:2023-03-03 13:04:01
【问题描述】:

是否可以使用 Java 为存档中的文件获取文件或 URI 对象? (zip 或 jar 存档)

感谢 Hemeroc。

【问题讨论】:

    标签: java file uri archive


    【解决方案1】:

    jar: 协议是一种为 JAR 存档中的资源构建 URI 的方法:

    jar:http://www.example.com/bar/baz.jar!/path/to/file
    

    请参阅 JarURLConnection 的 API 文档:http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html

    jar:!/ 之间可以是任何 URL,包括 file: URL。

    【讨论】:

      【解决方案2】:
      public List<File> getFilesInJar(String jarName){    
        List<File> result = new ArrayList<File>();
        File jarFile = new File(jarName);    
        JarInputStream jarFile = new JarInputStream(new FileInputStream(jarFile));
        JarEntry jarEntry;
      
        while ((jarEntry = jarFile.getNextJarEntry()) != null) {
          result.add(inputStreamToFile(jarFile.getInputStream(jarEntry)));
        }
        return result;
      }
      

      对于 inputStreamToFile 方法,谷歌“java inputStream to file”,虽然您可能也对 InputStream 对象而不是 File 对象感到满意 :)

      【讨论】:

        【解决方案3】:

        实际文件数据见ZipFile#getInputStream(ZipEntry)。该类的 javadocs 解释了如何使用它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-30
          • 1970-01-01
          • 1970-01-01
          • 2018-01-29
          • 1970-01-01
          • 2012-10-14
          相关资源
          最近更新 更多