Implementação de compressão e descompressão do formato de compressão ZIP através da API Java
A cópia do código é a seguinte:
pacote com.hongyuan.test;
importar java.io.file;
importar java.io.fileInputStream;
importar java.io.fileOutputStream;
importar java.io.ioException;
importar java.io.inputStream;
importar java.io.OutputStream;
importar java.util.enumeration;
importar java.util.zip.zipentry;
importar java.util.zip.zipfile;
importar java.util.zip.zipOutputStream;
classe pública ziptest {
public static void main (string [] args) lança ioexception {
unzip ("bootstrap.zip");
zip ("bootstrap_01.zip", "bootstrap/css/bootstrap.css", "bootstrap/css/bootstrap.min.css");
}
public static void desnzip (nome do arquivo de string) lança ioexception {
// Obtenha objeto de arquivo comprimido
Zipfile zf = novo zipfile (nome do arquivo);
// Transferir entradas do arquivo
Enumeração <?
while (items.hasMoreElements ()) {
Item zipentry = items.nextElement ();
String filepath = zf.getName (). Substring (0,
zf.getName (). LastIndexOf (".")))
+ File.separator + item.getName ();
Arquivo arquivado = novo arquivo (filepath.substring (0,
filepath.LastIndexOf ("/"));
if (! filedir.exists ()) {
filedir.mkdirs ();
}
// Leia o arquivo do fluxo
OutputStream out = new FileOutputStream (filepath);
InputStream in = zf.getInputStream (item);
byte [] temp = novo byte [1024];
int len = 0;
while ((len = in.read (temp))> 0) {
out.write (temp, 0, len);
}
in.Close ();
out.Close ();
}
zf.close ();
}
public static void zip (String filename, string ... arquivos) lança ioexception {
// Construa o fluxo de saída de arquivo comprimido
ZipOutputStream zos = new ZipOutputStream (new FileOutputStream (nome do arquivo));
for (int i = 0, size = files.length; i <tamanho; i ++) {
// Crie uma entidade compactada
Entrada zipentry = novo zipentry (arquivos [i] .substring (arquivos [i] .LastIndexOf ("/")+1));
zos.putNextEntry (entrada);
// Conteúdo do arquivo de saída no fluxo compactado
InputStream is = new FileInputStream (arquivos [i]);
int conting = 0;
byte [] buffer = novo byte [1024];
while ((count = is.read (buffer))> = 0) {
zos.write (buffer, 0, contagem);
}
zos.flush ();
zos.closeentry ();
is.close ();
}
}
}