Você precisa importar o pacote Ant.jar e baixá -lo no site do Apache (http://ant.apache.org/bindownload.cgi).
A cópia do código é a seguinte:
importar java.io.bufferInputStream;
importar java.io.bufferedOutputStream;
importar java.io.file;
importar java.io.fileInputStream;
importar java.io.fileOutputStream;
importar java.io.ioException;
importar java.util.zip.zipOutputStream;
importar org.apache.tools.ant.project;
importar org.apache.tools.ant.taskdefs.expand;
importar org.apache.tools.zip.zipentry;
importação com.xyq.io.util.closeioutil;
classe pública Ziputil {
String final estática privada Encode = "UTF-8";
public static void zip (string inputfilepath, string zipfileName) {
Arquivo inputfile = novo arquivo (inputFilePath);
if (! inputfile.exists ())
lançar nova execução de tempo de execução ("O arquivo original não existe !!!");
FILE BASETARZIPFILE = NOVO FILE (ZIPFILENAME) .getParentFile ();
if (! BASETARZIPFILE.EXISTS () &&! BASETARZIPFILE.MKDIRS ())
lançar nova execução de tempo de execução ("O arquivo de destino não pode ser criado !!!");
BufferOutputStream bos = nulo;
FileOutputStream Out = NULL;
ZipOutputStream zout = null;
tentar {
// Crie objeto de saída de arquivo para fora, Prompt: Preste atenção ao suporte chinês
out = new FileOutputStream (new String (zipFileName.getBytes (Encode));
bos = new bufferedoutputStream (out);
// O streaming de saída de arquivo está conectado
zout = new ZipOutputStream (BOS);
zip (zout, inputFile, inputFile.getName ());
Closeioutil.closeAll (zout, bos, out);
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
zip estático privado (zipoutputStream Zout, arquivo de arquivo, base de string) {
tentar {
// Se o identificador de arquivo for um diretório
if (file.isdirectory ()) {
// Obtenha o arquivo no diretório
Arquivo [] listfiles = file.listfiles ();
// Crie uma entrada ZIP
zout.putNextEntry (novo zipentry (base + "/"));
base = (base.length () == 0? "": base + "/");
if (listfiles! = null && listfiles.length> 0)
// Viaje os arquivos no diretório
para (arquivo f: listfiles)
// insere recursivamente este método
zip (zout, f, base + f.getName ());
}
// Se o identificador de arquivo for um arquivo
outro {
if (base == "") {
base = file.getName ();
}
// preencha a alça do arquivo
zout.putNextEntry (novo zipentry (base));
// Inicie a compactação
// Leia do arquivo de arquivo, escreva para lançar zip
writefile (zout, arquivo);
}
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
private estático void writefile (zipOutputStream Zout, arquivo de arquivo)
lança ioexception {
FileInputStream em = null;
BufferInputStream bis = null;
in = new FileInputStream (arquivo);
bis = new bufferingInputStream (in);
int len = 0;
byte [] buff = novo byte [2048];
while ((len = bis.read (buff))! = -1)
zout.write (buff, 0, len);
zout.flush ();
Closeioutil.CLOSEALL (bis, in);
}
/***
* Descompressão
*
* @param zippath
* Caminho do arquivo zip
* @param DestinationPath
* Destino de descompressão
* @param ecode
* Conjunto de caracteres codificados de nomes de arquivos
*/
public static void Unzip (String Zippath, String DestinationPath) {
Arquivo zipfile = novo arquivo (zippath);
if (! zipfile.exists ())
Jogue novo RunTimeException ("FILE ZIP" + ZIPPATH
+ "não existe.");
Project proj = new Project ();
Expandir expand = new expand ();
expand.setProject (proj);
expand.setTaskType ("descomos");
expand.setTaskName ("Unzip");
expand.SetSRC (ZIPFILE);
expand.setDest (novo arquivo (destino de destino));
expand.setEncoding (codificador);
expand.execute ();
System.out.println ("descomposição feita !!!");
}
public static void main (string [] args) {
String dir = new String ("f: // meu backup // document // myeclipse+9.0 versão oficial rachaduras e ativação (teste profissional disponível)");
dir = new string ("f: /111.jpg");
zip (dir, "f: /bzbxb/zipant.zip");
unzip ("f: /bzbxb/zipant.zip", "f:/xx/xx/");
}
}