如何将2个zip文件合并为1个zip
本文关键字:zip 合并 1个 文件 2个 | 更新日期: 2023-09-27 18:10:07
我正在尝试在c#中为我的世界制作一个自定义启动器,但是我遇到了一个颠簸。
我想添加一些东西到它,Minecraft Forge,但我能想到的唯一方法是将minecraft.jar
的扩展改为minecraft.zip
,提取Minecraft Forge.zip
和minecraft.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
?
在您的情况下,如果由于操作系统的限制而无法解压缩文件,则需要"跳过"解压缩临时文件来压缩它们。相反,只处理输入&输出流,如在这里找到的答案所建议的:我如何在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'
有冲突,因为有类似的类名,但在它们上面有不同的$
变量后缀。