1

Windows - 我正在尝试使用 JTar 库创建一个新的 Tar 文件,其中包含以下内容......

MyTarFile.tar--|
               |--MyFolder--|
                            |--MyFile.zip

我可以在 MyTarFile 的根目录中使用文件夹和 zip 文件创建它,但我不知道(我环顾四周)如何创建该文件夹并在其中包含 zip 文件。我需要知道 TarEntry(s) 使用什么(文件对象)(它是一个用于文件夹,一个用于文件......还是一个用于两者?)以及 InputStream 应该是什么样子(我相信zip 文件只有一个,但不确定)。我正在尝试创建一个文件来模仿现有格式,因此我无法选择只是丢失该文件夹,因为使用该文件的软件会寻找它。我可以将 zip 文件添加到实际文件系统上的 MyFolder 文件夹中(同样,这是在 Windows 上),然后再进行 taring 或不...任何工作都可以。

我已经尝试过完整路径和相对路径(似乎 InputStream 必须有完整路径)但没有运气。除了切换库之外,其他想法都用完了(也许 JTar 不支持这一点)。

谢谢!

4

1 回答 1

2

在没有看到您已经写过的内容的情况下,这是我回答的最佳尝试。我对 JTar 不熟悉,但是在查看了他们主页上的示例后,我编写了一个快速测试程序,该程序创建了一个 tar,其中一个文件位于 tar 的根目录中,一个文件位于 tar 的目录中,我相信是你正在尝试做的事情。您感兴趣的代码是这样的:

TarEntry tarEntry = new TarEntry(new File("/Users/userGuy/Documents/students.xml"),"students.xml");
TarEntry otherTarEntry = new TarEntry(new File("/Users/userGuy/Documents/students2.xml"),"inner-dir/students2.xml");

请注意,第二个 tar 条目otherTarEntry是使用相对路径作为构造entryName函数中的参数进行实例化的TarEntry。这是一个名称不佳的参数,因为从技术上讲,它是 tar 中文件的路径,不仅仅是名称。

使用上面的示例文件名,您的代码可能如下所示:

TarEntry tarEntry = new TarEntry(new File("<path to file>"),"MyFolder/MyFile.zip");
于 2012-12-11T23:32:06.020 回答