如何将2个zip文件合并为1个zip

本文关键字:zip 合并 1个 文件 2个 | 更新日期: 2023-09-27 18:10:07

我正在尝试在c#中为我的世界制作一个自定义启动器,但是我遇到了一个颠簸。

我想添加一些东西到它,Minecraft Forge,但我能想到的唯一方法是将minecraft.jar的扩展改为minecraft.zip,提取Minecraft Forge.zipminecraft.zip的内容到同一文件夹,然后将整个文件夹压缩到minecraft.jar

然而minecraft.jar有一个名为aux.class的文件,所以每当我的提取脚本(在java中制作)试图提取它时,它只是说:

无法找到文件G:'Programming' c# 'Console'Forge Installer'Forge Installer'bin'Debug'Merge'aux.class.

我能想到的唯一其他方法是将minecraft_forge.zip合并到minecraft.zip中,我花了大约2个小时在谷歌上寻找(看着有人在几分钟内看到它),但它总是向我显示"如何压缩多个文件","如何在c#中制作zip文件"等结果。

所以我来这里寻找我的答案,抱歉,如果这是很多阅读,但我总是看到这里的评论说"你没有给我们足够的信息来帮助你"。

编辑:如果不清楚的问题是:我如何能够将minecraft_forge.zip的内容放入minecraft.zip ?

如何将2个zip文件合并为1个zip

在您的情况下,如果由于操作系统的限制而无法解压缩文件,则需要"跳过"解压缩临时文件来压缩它们。相反,只处理输入&输出流,如在这里找到的答案所建议的:我如何在Java中向现有的zip文件添加条目?

正如您所指出的,"aux"是windows中受保护的关键字,无论文件后缀是什么都没关系;Windows不会让你使用它。这里有几个讨论这个问题的线程。

Ref 1: Windows保留字。

Ref 2: Windows保留字。

如果您正在输入命令来执行复制或解压缩,那么您有可能通过使用以下''.'''?'的路径前缀来使其工作。当我对此进行测试时,它可以在句号或问号后面使用一个或两个反斜杠。使以下工作:

''.'c:'paths'etc
''.''c:'paths'etc
''?'c:'path'etc
''?''c:'path'etc

我使用以下命令进行测试。当尝试通过windows资源管理器重命名时,它给出了"指定的设备名称无效"错误消息。从命令行来看,它工作得很好。我应该指出的是,一旦您创建了这些文件,您必须使用相同的技术手动删除它们。Windows资源管理器报告这些0字节大小的文本文件"对于目标文件系统来说太大了",即…回收站。重命名" '。'c:'temp'New Text Document.txt德尔"' ' c: ' temp ' aux.txt "

至于直接从zip或jar文件复制,我自己尝试过,它似乎工作。我使用了7-zip并直接使用"打开存档…"windows资源管理器上下文菜单打开了jar文件。然后我将forge.jar中的内容拖放到minecraft jar文件中。由于它是具有违规文件名的minecraft jar文件,因此需要在文件系统上创建临时文件的机会减少了。我确实看到有人提到,当在jar和zip之间复制时,7-zip可能会解压缩到一个临时文件。7-zip档案间复制参考

我应该指出我的minecraft jar (minecraft_server.1.8.7.jar)的副本不包含一个名为aux.class的文件。我也没有尝试在复制/合并后使用jar。我也没有花太多时间去弄清楚它合并了两个内容有多好,因为它看起来可能与com'google'common'base'有冲突,因为有类似的类名,但在它们上面有不同的$变量后缀。

我希望这两个可能的建议能给你一些空间,让你找到解决你需求的办法。如果你还在看