Межплатформенное сжатие файлов - PullRequest
0 голосов
/ 12 августа 2009

Нам нужно кроссплатформенное решение для сжатия файлов. Наш сервер работает на Windows XP / Vista / 7 и 3 дистрибутивах Unix, SunOS, HPUX и AIX. Наш сервер создает файлы, которые необходимо сжать перед тем, как вернуть их клиенту. Нашей первоначальной мыслью было сжатие файлов с помощью jar, так как на большинстве серверов установлена ​​java, но, очевидно, jar не включен в jre, только в jdk. Наш сервер написан на C, а приложение, которое должно создать сжатый файл, - Perl.

Мне бы очень хотелось, чтобы у меня не было установки, так как наша база установки БОЛЬШАЯ, а добавление новых необходимых приложений обычно затруднительно. Есть ли что-нибудь, что гарантированно будет встроено в каждую из тех ОС, которые я мог бы использовать для архивирования? Даже если бы мне приходилось использовать что-то свое для каждого, это тоже было бы хорошо.

Ответы [ 4 ]

7 голосов
/ 12 августа 2009

Если вы не хотите устанавливать что-либо, вы в значительной степени SOL. Windows не делает это легким.

Если вы хотите что-то написать самостоятельно java.util.zip в Java 2 Standard Edition (J2SE) и Perl имеет Archive :: Zip

4 голосов
/ 12 августа 2009

Мне очень нравится 7-zip, но в ситуациях, подобных вашей, я всегда обращаюсь к наименее распространенному знаменателю: ZIP. Простой старый ZIP. Большинство Unices и Linux имеют zip и unzip. А для Windows существует множество опций, включая 7-zip , которые могут манипулировать zip-файлами. И, вероятно, на клиентах будет установлен zip-клиент.

1 голос
/ 12 августа 2009

Если у вас установлена ​​Java (независимо от JRE или JDK), вы можете использовать pack200 и unpack200 для создания и распаковки архивов. Pack200 использует сжатие gzip, которое довольно стандартно.

Обратите внимание, что pack200 не позволяет сжимать несколько файлов в одном архиве (характер gzip). При необходимости вы можете реализовать свой собственный инструмент на чистом Java, который будет создавать zip-файлы и запускаться где угодно с унифицированным интерфейсом командной строки (Java имеет встроенную поддержку zip, см. некоторые примеры ).

Если вы идете по этому пути, вы также можете использовать нативную реализацию java форматов bz2 или 7zip для лучшего сжатия.

1 голос
/ 12 августа 2009

Вы всегда можете рассмотреть возможность распространения инструмента сжатия с открытым исходным кодом или даже использовать SDK для сжатия как часть вашего приложения, например 7 ZIP

...