3

我最近在寻找一个体面的库来处理 ZIP 文件。SO 上的几篇文章推荐了 TrueVFS,以前称为TrueZip

我需要提取单个文件,修改它们,然后将它们放回存档,覆盖旧文件。目标是编写库以将 Java 宏上传到 ODF 文件、Libre Office/Open Office 文档,这些文件实际上是标准的 ZIP 文件。

TrueVFS 文档缺乏基础知识,所以我花了一些时间和实验才发现可以很容易地做到这一点:

import net.java.truevfs.access.TArchiveDetector;
import net.java.truevfs.access.TFile;
import net.java.truevfs.access.TVFS;
import net.java.truevfs.comp.zipdriver.ZipDriver;

public class BasicOperations {

    public File extractFileFromArchive(File archiveFile, String pathInArchive, File destFolder) throws Exception {
        TFile archivedFile = new TFile(archiveFile, pathInArchive);
        File destFile = new File(destFolder, pathInArchive);
        destFile.getParentFile().mkdirs();
        archivedFile.cp_rp(destFile);
        return destFile;
    }

    public void addFileToArchive(File archiveFile, String pathInArchive, File srcFile) throws Exception {
        TFile destArchiveFile = new TFile(archiveFile, pathInArchive, new TArchiveDetector("zip", new ZipDriver()));
        TFile.cp_p(srcFile, destArchiveFile);
    }
}

到目前为止很好。但是有一个问题——大量的依赖!. 即使使用基本配置文件:

    <dependency>
        <groupId>net.java.truevfs</groupId>
        <artifactId>truevfs-profile-default</artifactId>
        <version>0.11.0</version>
        <type>pom</type>
    </dependency>

Maven 解析了近 50 个(!!!)依赖库

这并不全是坏事,其中一些被标记为已提供(不确定它对桌面应用程序有什么影响),而且大多数库实际上都是很小的微型库。其中大部分来自同一作者。看起来他从 Apache Jakarta 库中复制(提取)了大量代码。我设法排除了一些库,例如 Swing GUI 以输入加密档案的密码,但大多数依赖项都非常顽固。

最离谱的是对 scala-library (org.scala-lang:scala-library:2.11.6) 的依赖。TrueVFS 应该是 Java 库。我检查了源代码,但似乎没有任何相关的东西在使用它。是不是某个不起眼的司机?当我尝试将其从依赖项 maven 中排除时,我的测试失败并显示java.lang.ClassNotFoundException: scala.Immutable.

所以问题是,请有人分享 Maven 配置或建议代码更改,这将显着减少依赖关系,即 scala-library?我只需要对简单的 ZIP 文件进行简单的 R/W 访问。

4

0 回答 0