Anda perlu mengimpor paket Ant.jar dan mengunduhnya di situs web Apache (http://ant.apache.org/bindownload.cgi).
Salinan kode adalah sebagai berikut:
impor java.io.bufferedInputStream;
impor java.io.bufferedoutputStream;
impor java.io.file;
impor java.io.fileInputStream;
impor java.io.fileoutputStream;
impor java.io.ioException;
impor java.util.zip.zipoutputStream;
impor org.apache.tools.ant.project;
impor org.apache.tools.ant.taskdefs.expand;
impor org.apache.tools.zip.zipentry;
impor com.xyq.io.util.closeioutil;
Ziputil kelas publik {
string final statis privat encode = "UTF-8";
public static void zip (string inputFilePath, string zipfileName) {
File inputFile = file baru (inputFilePath);
if (! inputFile.exists ())
Lempar RuntimeException baru ("File asli tidak ada !!!");
File basetarzipFile = file baru (zipfileName) .getParentFile ();
if (! Basetarzipfile.exists () &&! Basetarzipfile.mkdirs ())
Lempar RuntimeException baru ("File target tidak dapat dibuat !!!");
BufferedOutputStream bos = null;
FileOutputStream out = null;
ZipoutputStream zout = null;
mencoba {
// Buat objek output file, prompt: Perhatikan dukungan Cina
out = new fileoutputStream (string baru (zipfileName.getbytes (encode)));
BOS = baru bufferedoutputStream (out);
// File output streaming terhubung
zout = new zipoutputStream (bos);
zip (zout, inputFile, inputFile.getName ());
Closeoutil.closeall (zout, bos, out);
} catch (Exception e) {
e.printstacktrace ();
}
}
Private static void zip (zipoutputStream zout, file file, string base) {
mencoba {
// Jika pegangan file adalah direktori
if (file.isDirectory ()) {
// Dapatkan file di direktori
File [] listFiles = file.listFiles ();
// Buat entri zip
zout.putNextEntry (zipentry baru (base + "/"));
base = (base.length () == 0? "": base + "/");
if (listFiles! = null && listFiles.length> 0)
// bepergian file di direktori
untuk (file f: listFiles)
// Masukkan metode ini secara rekursif
zip (zout, f, base + f.getName ());
}
// Jika pegangan file adalah file
kalau tidak {
if (base == "") {
base = file.getName ();
}
// Isi pegangan file
zout.putNextEntry (zipentry baru (base));
// Mulai kompresi
// Baca dari File Inflow, tulis ke arus keluar zip
writeFile (zout, file);
}
} catch (Exception e) {
e.printstacktrace ();
}
}
private static void writeFile (zipoutputStream zout, file file)
melempar ioException {
FileInputStream di = null;
BufferedInputStream bis = null;
di = FileInputStream baru (file);
bis = baru bufferedInputStream (IN);
int len = 0;
byte [] buff = byte baru [2048];
while ((len = bis.read (buff))! = -1)
zout.write (buff, 0, len);
zout.flush ();
Closeoutil.closeall (bis, in);
}
/***
* Dekompresi
*
* @param Zippath
* Jalur file zip
* @param DestinationPath
* Tujuan dekompresi
* @param ecode
* Set karakter yang dikodekan dari nama file
*/
public static void unzip (string zippath, string destinationpath) {
File zipfile = file baru (zippath);
if (! zipfile.exists ())
Lempar RuntimeException baru ("File Zip" + Zippath
+ "tidak ada.");
Proyek ProJ = Proyek Baru ();
Expand expand = new expand ();
Expand.setProject (ProJ);
expand.setktype ("unzip");
expand.setaskname ("unzip");
expand.setsrc (zipfile);
expand.setDest (file baru (DestinationPath));
Expand.setencoding (Encode);
expand.execute ();
System.out.println ("Unzip selesai !!!");
}
public static void main (string [] args) {
String dir = string baru ("f: // cadangan saya // dokumen // myeclipse+9.0 versi resmi retak dan aktivasi (tes profesional tersedia)");
dir = string baru ("f: /111.jpg");
zip (dir, "f: /bzbxb/zipant.zip");
unzip ("f: /bzbxb/zipant.zip", "f:/xx/xx/");
}
}