Помощь в создании Zip-файлов из .Net и их чтении из Java.

StackOverflow https://stackoverflow.com/questions/71000

  •  09-06-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать Zip-файл из .Net, который можно прочитать из кода Java.

Я использовал SharpZipLib для создания Zip-файла, но также, если созданный файл действителен в соответствии с функцией CheckZip библиотеки #ZipLib и может быть успешно распакован с помощью WinZip или WinRar, я всегда получаю сообщение об ошибке при попытке распаковать его с помощью Java. Класс .Utils.Zip в Java.

Кажется, проблема в неправильном заголовке, написанном SharpZipLib. Я также разместил вопрос на форуме SharpDevelop, но безрезультатно (см. http://community.sharpdevelop.net/forums/t/8272.aspx для информации) но безрезультатно.

Есть ли у кого-нибудь пример кода для сжатия Zip-файла с помощью .Net и его распаковки с помощью класса Java.Utils.Zip?

С уважением Массимо

Это было полезно?

Решение

я использовал библиотека DotNetZip и кажется, что он работает правильно.Типичный код:

using (ZipFile zipFile = new ZipFile())
{
  zipFile.AddDirectory(sourceFolderPath);
  zipFile.Save(archiveFolderName);
}

Другие советы

У меня была та же проблема с созданием zip-архивов с помощью SharpZipLib (последняя версия) и распаковкой с помощью java.utils.zip.

Вот что решило проблему для меня.Мне пришлось принудительно исключить использование zip64:

ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))

s.UseZip64 = UseZip64.Off;

Не могу помочь с SharpZipLib, но вы можете попробовать создать zip-файл, используя Почтовый пакет сорт System.IO.Packaging без использования сторонних библиотек (требуется .NET 3+).

Вы не хотите использовать класс ZipPackage в .NET — это не совсем стандартная модель zip.Да, это так, но это предполагает определенную структуру файла, манифест с известным именем и так далее.ZipPackage, похоже, оптимизирован для документов Office и XPS.

Сторонняя библиотека, например http://www.codeplex.com/DotNetZip, вероятно, будет лучшим выбором, если вы создаете ZIP-файлы общего назначения и хотите обеспечить хорошую совместимость.

DotNetZip создает файлы, которые очень совместимы практически со всем, включая Java java.utils.zip.Но будьте осторожны, используя функции, которые Java не поддерживает, например ZIP64 или Unicode.ZIP64 полезен только для очень больших архивов, которые, я думаю, Java в настоящее время плохо поддерживает.Java особым образом поддерживает Unicode, поэтому, если вы создаете ZIP-файл на основе Unicode с помощью DotNetZip, вам просто нужно следовать нескольким правилам, и он будет работать нормально.

Чтобы определить, действительно ли это соответствующий ZIP-файл, см. PKZIP. Спецификация формата файла .ZIP.

Как бы то ни было, у меня не было проблем с использованием SharpZipLib для создания ZIP-файлов на устройстве Windows Mobile и открытия их с помощью WinZip или встроенной функции сжатых папок Windows XP, а также без проблем с созданием ZIP-файлов на рабочем столе с помощью SharpZipLib и их обработкой с помощью моего собственная утилита для извлечения ZIP-файлов (по сути, оболочка zlib) на мобильном устройстве.

У меня была аналогичная проблема с распаковкой файлов, заархивированных SharpZipLib, в Linux.Думаю, я решил эту проблему (ну, сейчас я работаю на Linux и Mac, я это тестировал), посмотрите сообщение в моем блоге: http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top