Debe importar el paquete Ant.jar y descargarlo en el sitio web de Apache (http://ant.apache.org/bindownload.cgi).
La copia del código es la siguiente:
import java.io.bufferedInputStream;
import java.io.bufferedOutputStream;
import java.io.file;
import java.io.fileInputStream;
import java.io.fileOutputStream;
import java.io.ioException;
import java.util.zip.zipoutputstream;
importar org.apache.tools.ant.project;
importar org.apache.tools.ant.taskdefs.expand;
importar org.apache.tools.zip.zipentry;
import com.xyq.io.util.closeioutil;
clase pública Ziputil {
Cadena de cadena final estática privada = "UTF-8";
public static void zip (String inputFilePath, string zipFileName) {
Archivo InputFile = nuevo archivo (inputFilePath);
if (! inputFile.Exists ())
tirar nueva runtimeException ("el archivo original no existe!");
Archivo basetarzipfile = nuevo archivo (zipFileName) .getParentFile ();
if (! basetArzipFile.Exists () &&! BASETARZIPFILE.MKDIRS ())
tirar nueva runtimeException ("el archivo de destino no se puede crear!");
BufferedOutputStream bos = null;
FileOutputStream out = null;
ZipoutputStream zout = null;
intentar {
// Crear objeto de salida de archivo, solicitado: preste atención al soporte chino
out = new FileOutputStream (new String (ZipFileName.getBytes (encode)));
bos = new BufferedOutputStream (Out);
// La transmisión de salida de archivo está conectada
zout = nuevo ZipOutputStream (BOS);
zip (zout, inputFile, inputFile.getName ());
CloseIoutil.ClOSEALL (Zout, Bos, Out);
} Catch (Exception e) {
E.PrintStackTrace ();
}
}
Private static void zip (zipoutputstream zout, archivo de archivo, string base) {
intentar {
// Si el mango del archivo es un directorio
if (file.isDirectory ()) {
// Obtener el archivo en el directorio
Archivo [] listFiles = file.listFiles ();
// crear una entrada zip
zout.putNextEntry (New ZipEntry (base + "/"));
base = (base.length () == 0? "": base + "/");
if (listFiles! = null && listfiles.length> 0)
// viaja los archivos en el directorio
para (archivo f: listfiles)
// Ingrese recursivamente este método
zip (zout, f, base + f.getName ());
}
// Si el mango del archivo es un archivo
demás {
if (base == "") {
base = file.getName ();
}
// Complete el mango del archivo
zout.putNextEntry (New ZipEntry (base));
// Iniciar compresión
// Leer desde la entrada de archivos, escriba a la salida del flujo
WriteFile (zout, archivo);
}
} Catch (Exception e) {
E.PrintStackTrace ();
}
}
Private static void WriteFile (ZipOutputStream Zout, archivo de archivo)
lanza ioexception {
FileInputStream in = null;
BufferedinputStream bis = null;
in = new FileInputStream (archivo);
bis = new BufferedInputStream (in);
int len = 0;
byte [] buff = new Byte [2048];
while ((len = bis.read (buff))! = -1)
zout.Write (Buff, 0, Len);
zout.flush ();
Closeioutil.ClOSEALL (bis, in);
}
/***
* Descompresión
*
* @param zippath
* ruta de archivo zip
* @param DestinationPath
* Destino de descompresión
* @param Ecode
* Conjunto de caracteres codificado de nombres de archivo
*/
public static void unzip (String Zippath, String DestinationPath) {
Archivo zipfile = nuevo archivo (zippath);
if (! zipfile.exists ())
Lanzar nueva runtimeException ("archivo zip" + zippath
+ "no existe.");
Proyecto proj = nuevo proyecto ();
Expandir expandir = new Expand ();
expand.setProject (proj);
expand.setTaskType ("Unzip");
expand.setTaskName ("Unzip");
expandir.setsrc (zipfile);
expand.setDest (nuevo archivo (DestinationPath));
expand.setEncoding (codificar);
expand.Execute ();
System.out.println ("¡Unzip hecho!");
}
public static void main (string [] args) {
String dir = new String ("f: // mi copia de seguridad // documento // myeclipse+9.0 Versión oficial de la versión y activación (prueba profesional disponible)");
dir = nueva cadena ("f: /111.jpg");
zip (dir, "f: /bzbxb/zipant.zip");
unzip ("f: /bzbxb/zipant.zip", "f:/xx/xx/");
}
}