Эта статья в основном представляет использование классов, связанных с Java, для сжатия файлов или папок.
Zlib - это библиотека сжатия данных, предназначенная для обработки чистых данных (независимо от источника данных).
7Z - это новый формат сжатия, который в настоящее время имеет самый высокий коэффициент сжатия.
GZIP - это инструмент сжатия файлов (или формат сжатого файла, сгенерированный инструментом сжатия) и предназначен для обработки отдельных файлов. Gzip использует Zlib при застежке данных в файле. Чтобы сохранить информацию, связанную со свойствами файла, GZIP необходимо сохранить больше контента заголовка в сжатом файле (*.gz), и Zlib не нужно учитывать это. Но GZIP подходит только для одного файла, поэтому суффиксы, которые мы часто видим в Unix/Linux, являются *.tar.gz или *.tgz, что означает, что несколько файлов сначала упакованы в один файл с помощью смолы, а затем сжимаются Gzip.
ZIP - это формат, подходящий для сжатия нескольких файлов (соответствующие инструменты включают PKZIP и Winzip и т. Д.). Следовательно, файл ZIP должен дополнительно содержать информацию о структуре каталога файлов, которая является больше информации, чем заголовок GZIP. Однако следует отметить, что формат ZIP может принять различные алгоритмы сжатия. Большинство наших общих файлов ZIP не сжимаются с использованием алгоритма ZLIB, а формат сжатых данных сильно отличается от формата GZIP.
Следовательно, вам следует выбрать различные методы сжатия в соответствии с вашими конкретными потребностями: если вам нужно только сжатие/распахнуть данные, вы можете напрямую реализовать их с помощью Zlib. Если вам нужно генерировать файлы формата GZIP или распаковать результаты сжатия других инструментов, вы должны использовать GZIP или ZIP и другие связанные классы для его обработки.
зависимость Maven
<dependency> <groupid> org.apache.commons </groupid> <artifactid> commons-compress </artifactid> <sersive> 1.12 </version> </dependent>
Zip Format
public static void Zip (строка ввода, вывод строки, string name) Throws Exception {ZipOutputStream OUT = new ZipOutputStream (New FileOutputStream (output)); String [] paths = input.split ("// |"); File [] files = new File [paths.length]; Byte [] buffer = новый байт [1024]; for (int i = 0; i <paths.length; i ++) {files [i] = новый файл (paths [i]); } for (int i = 0; i <files.length; i ++) {fileInputStream fis = new FileInputStream (files [i]); if (files.length == 1 && name! = null) {out.putnextentry (new Zipentry (name)); } else {out.putnextentry (new Zipentry (files [i] .getName ())); } int len; // Читать содержание файла, необходимого загрузить и упаковать его в файл Zip, в то время как ((len = fis.read (buffer))> 0) {out.write (буфер, 0, len); } out.closeEntry (); fis.close (); } out.close (); } out.close (); } Gzip Package
public static void gzip (ввод строки, вывод строки, название строки), бросает исключение {string compress_name = null; if (имя! = null) {compress_name = name; } else {compress_name = new File (input) .getName (); } byte [] buffer = new Byte [1024]; try {gzipparameters gp = new gzipparameters (); // Установить имя файла в сжатый файл gp.setfilename (compress_name); Gzipcompressoroutputstream gcos = new gzipcompressoroutputstream (new FileOutputStream (output), GP); FileInputStream fis = new FileInputStream (input); int длина; while ((length = fis.read (buffer))> 0) {gcos.write (buffer, 0, length); } fis.close (); gcos.finish (); } catch (ioException ioe) {io.printstackTrace (); }} 7Z Pack
public static void z7z (ввод строки, вывод строки, название строки), бросает исключение {try {sevenzoutputfile sevenzoutput = new SevenzOutputFile (новый файл (выход)); SevenZarchiveEntry intry = null; String [] paths = input.split ("// |"); File [] files = new File [paths.length]; for (int i = 0; i <paths.length; i ++) {files [i] = новый файл (paths [i] .trim ()); } for (int i = 0; i <files.length; i ++) {bufferedInputStream input = null; enter = new BufferedInputStream (New FileInputStream (Paths [i])); if (name! = null) {entry = sevenzoutput.createarchiveEntry (новый файл (paths [i]), name); } else {entry = sevenzoutput.createarchiveEntry (новый файл (paths [i]), new File (paths [i]). getName ()); } sevenzOutput.putArchiveEntry (entry); Byte [] buffer = новый байт [1024]; int len; while ((len = enterstream.read (buffer))> 0) {sevenzoutput.write (buffer, 0, len); } enter.close (); sevenzoutput.closearchiveEntry (); } sevenzOutput.close (); } sevenzOutput.close (); } catch (ioException ioe) {System.out.println (ioe.toString () + "" + input); }} Zlib Package
public static void zlib (String Input, String output) Throws Exception {// DeflaterOutputStream dos = new DefflaterOutputStream (new FileOutputStream (output)); DeflateParameters dp = new DefftateParameters (); dp.setwithzlibheader (true); DefflectecompressorOutputStream dcos = new DeflateCompressorOutputStream (New FileOutputStream (Output), DP); FileInputStream fis = new FileInputStream (input); int length = (int) новый файл (input) .length (); байтовые данные [] = новый байт [длина]; // int длина; while ((length = fis.read (data))> 0) {dcos.write (data, 0, length); } fis.close (); dcos.finish (); dcos.close (); }Я надеюсь, что эта статья будет вам полезна. Это все для вас, чтобы представить сжатое и упакованное содержимое внедрения форматов Zip, Gzip, 7Z и Zlib. Я надеюсь, что все будут продолжать следить за нашим сайтом! Если вы хотите выучить Java, вы можете продолжать следить за этим веб -сайтом.