【问题标题】:How to read zip file within a jar file如何读取 jar 文件中的 zip 文件
【发布时间】:2017-08-19 14:51:59
【问题描述】:

我有一个 zip 文件(在一个 jar 文件中),我想在 init 中读取它。 我知道我可以使用 getResourceAsStream(...) 轻松读取 txt 文件,避免出现“URI 不分层”错误。 但现在确定我将如何为 zip 文件执行此操作。

以下是我的代码,但是当我将代码导出到可运行的 jar 并运行它时,它会抛出“URI 不是分层错误”。

URL fileLocation = ChemicalSynonyms.class.getClassLoader().getResource("sciome/workbench/resources/chemicalSynonym/" + strFileName);
        File file = new File(fileLocation.toURI());

        // it is a zip file
        ZipFile zipFile = new ZipFile(file);
        Enumeration<? extends ZipEntry> entries = zipFile.entries();
        ZipEntry entry = entries.nextElement();
        InputStream is = zipFile.getInputStream(entry);
        BufferedReader buf = new BufferedReader(new InputStreamReader(is));
        String lineJustFetched = null;
        String[] wordsArray;

        // read each line
        lineJustFetched = buf.readLine();

【问题讨论】:

  • 哪一行报错了?
  • 第一行。我知道对于 txt 文件,它应该是 getresourceasstream 而不是 getresource,但不知道我将如何处理 zip 文件
  • 您不能加载资源文件流并将其附加到 ZipFile 类吗?或者也许在文件系统中制作临时文件然后加载。

标签: java


【解决方案1】:

这可以通过使用扫描仪来完成。示例:

        InputStream is = MainClass.class.getClassLoader().getResourceAsStream(file location with zip file name);
        ZipInputStream zis = new ZipInputStream(is);
        ZipEntry ze = zis.getNextEntry();
        Scanner sc = new Scanner(zis);

        String[] wordsArray;
        while (sc.hasNextLine())
        {
           ....
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2021-12-15
    • 2011-01-17
    • 2023-04-02
    相关资源
    最近更新 更多