2013-04-19 3 views
0

Я пытаюсь создать обычную программу запуска Minecraft в C#, но я столкнулся с проблемой.Как объединить 2 zip-файла вместе в 1 zip

Я хочу добавить что-то в нем, 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 часов, глядя на Google (смотреть, как кто-то видит его в течение нескольких минут), но он всегда показывает мне результаты для " Как сделать zip-файл в C# »и т. Д.

Итак, я пришел сюда, чтобы найти свой ответ, извините, если это много, чтобы читать, но я всегда вижу комментарии здесь, говоря: Вы не дали нам достаточной информации, чтобы помочь вам ».

РЕДАКТИРОВАТЬ: Вопрос в случае, если это было непонятно: как я могу поместить содержимое minecraft_forge.zip в minecraft.zip?

+0

Вы должны показать код своего «скрипта экстракта». Кажется, что он не читает файл jar/zip ... – skirsch

+0

.jar работает нормально, проблема в том, что ** aux ** является незаконным именем в окнах, поэтому я не могу его перемещать нигде вне этого почтового индекса. Если я выхожу из 'aux.class', то он работает без сбоев. – Sealab

ответ

0

В вашем случае, если вы не можете разархивировать файлы из-за ограничений ОС, вам нужно «пропустить» разархивировать временные файлы, чтобы их застегнуть. Вместо этого обрабатывайте только выходные данные &, как это предлагается в ответах, найденных здесь: How can I add entries to an existing zip file in Java?

0

Как вы указали, «aux» - это защищенное ключевое слово в окнах, и не имеет значения, что такое суффикс файла; окна не позволят вам использовать его. Вот несколько тем, которые обсуждают это в целом.

Ref 1: Windows reserved words.

Ref 2: Windows reserved words.

Если вы набираете в команды для выполнения копирования или распакуйте, есть шанс, что вы можете получить эту работу, используя префикс пути из следующих \\.\ или \\?\. Когда я тестировал это, он работал либо с одним, либо с двойным обратным слешем после отметки периода или вопроса. Так, что следующие работы:

\\.\c:\paths\etc 
\\.\\c:\paths\etc 
\\?\c:\path\etc 
\\?\\c:\path\etc 

Я использовал следующую команду, чтобы проверить это. При попытке переименовать через Windows Explorer он дал «Указанное имя устройства недействительно». сообщение об ошибке. Из командной строки он работал отлично. Я должен указать, что после создания этих файлов вам придется вручную удалить их, используя ту же технику. Проводник Windows сообщает, что эти текстовые файлы размером 0 байт «слишком велики для целевой файловой системы», т. Е. ... корзины. переименование "\. \ C: \ Temp \ New Text Document.txt" aux.txt дель "\. \ C: \ Temp \ aux.txt"

Что касается копирования непосредственно из почтового индекса или баночке файлов, Я пробовал это сам, и он, похоже, работал. Я использовал 7-zip и открыл банки непосредственно с помощью «открытого архива ...«контекстное меню окна explorer.Я затем перетащил и отбросил содержимое из forge.jar в файл jar файла minecraft. Поскольку это файл minecraft jar с именем файла-нарушителя, вероятность создания временного файла в файловой системе снижается. Я вижу кого-то отметить, что 7-Zip может извлечь временный файл при копировании между банками и молниями. 7-zip reference on copying between archives

Я должен отметить, что моя копия Minecraft банку (minecraft_server.1.8.7.jar) сделал не содержит файл с именем aux.class. Я также не пытался использовать банку после копирования/слияния. Я также не тратил слишком много времени, пытаясь выяснить, насколько хорошо он объединил два содержимого, так как это похоже на то, что может быть конфликтуют с com\google\common\base\, так как есть похожие имена классов, но с разными переменными суффиксами $.

Я надеюсь, что эти два возможных предложения могут дать вам некоторое пространство для работы, чтобы найти решение для ваших нужд ... если вы все еще ищете.

 Смежные вопросы

  • Нет связанных вопросов^_^