Java解凍zip圧縮ファイル
2170 ワード
必要なパッケージは、mavenでインポートし、mavenを使用してインポートを自分でダウンロードしないでください.
org.apache.ant
ant
1.9.7
解凍コード添付private static final int buffer = 2048;
/**
* Zip
* @param path
* @throws IOException
*/
public static void unZip(String path) throws IOException {
int count = -1;
String savepath = "";
File file = null;
InputStream is = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
savepath = path.substring(0, path.lastIndexOf("/")) + File.separator; //
new File(savepath).mkdir(); //
ZipFile zipFile = null;
try {
zipFile = new ZipFile(path,"gbk"); //
Enumeration> entries = zipFile.getEntries();
while(entries.hasMoreElements()) {
byte buf[] = new byte[buffer];
ZipEntry entry = (ZipEntry)entries.nextElement();
String filename = entry.getName();
boolean ismkdir = false;
if(filename.lastIndexOf("/") != -1){ //
ismkdir = true;
}
filename = savepath + filename;
if(entry.isDirectory()){ //
file = new File(filename);
file.mkdirs();
continue;
}
file = new File(filename);
if(!file.exists()){ //
if(ismkdir){
new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //
}
}
file.createNewFile(); //
is = zipFile.getInputStream(entry);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos, buffer);
while((count = is.read(buf)) > -1) {
bos.write(buf, 0, count);
}
bos.flush();
bos.close();
fos.close();
is.close();
}
zipFile.close();
} finally {
try{
if(bos != null){
bos.close();
}
if(fos != null) {
fos.close();
}
if(is != null){
is.close();
}
if(zipFile != null){
zipFile.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
解凍の呼び出し//
Util.unZip(path);
//
new File(path).delete();