import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class ZipTest {
public static void main1(String[] args) {
try {
listEntry("ant.zip");
} catch (IOException e) {
System.out.println("列举目录出错");
return;
}
System.out.println("列举目录成功");
}
public static void createFolder(boolean isDirectory,String src){
String[] str = src.split("/");
StringBuilder sb = new StringBuilder();
for(int i=0;i<str.length;i++){
if(!isDirectory && i==str.length-1){
break;
}
sb.append(str[i]+"//");
File file = new File(sb.toString());
if(!file.exists()){
file.mkdir();
}
}
}
public static void zip(String source,String destination) throws IOException{
OutputStream out = new FileOutputStream(destination);
ZipOutputStream zipOutput = new ZipOutputStream(out);
ZipProcess(source,source,zipOutput);
zipOutput.close();
}
public static void ZipProcess(String before,String source,ZipOutputStream output) throws IOException{
File file = new File(source);
File[] files = file.listFiles();
for(File tmpFile:files){
if(tmpFile.isDirectory()){
String entryName = tmpFile.getAbsolutePath().substring(before.length()+1)+"//";
output.putNextEntry(new ZipEntry(entryName));
ZipProcess(before,tmpFile.getAbsolutePath(),output);
}else{
String entryName = tmpFile.getAbsolutePath().substring(before.length()+1);
output.putNextEntry(new ZipEntry(entryName));
InputStream in = new FileInputStream(tmpFile);
byte[] bys = new byte[2048];
int read = 0;
while((read = in.read(bys))!=-1){
output.write(bys, 0, read);
}
}
output.closeEntry();
}
}
public static void main3(String[] args) {
try {
zip("D://迷你游戏","d://a.zip");
} catch (IOException e) {
System.out.println("压缩失败");
return;
}
System.out.println("文件夹压缩成功");
}
public static void listEntry(String src) throws IOException{
ZipFile zipFile = new ZipFile(src);
Enumeration entries = zipFile.getEntries();
while(entries.hasMoreElements()){
ZipEntry zipEntry = (ZipEntry) entries.nextElement();
System.out.println(zipEntry.getName());
}
}
public static void main2(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("result.txt")));
String src = null;
OutputStream output = new FileOutputStream("asd.zip");
ZipOutputStream zipOutputStream = new ZipOutputStream(output);
while((src = br.readLine())!=null){
zipOutputStream.putNextEntry(new ZipEntry(src));
zipOutputStream.closeEntry();
}
zipOutputStream.close();
}
public static void unzip(String fileSrc) throws IOException{
ZipFile zipFile = new ZipFile(fileSrc);
Enumeration entries = zipFile.getEntries();
while(entries.hasMoreElements()){
ZipEntry zipEntry = (ZipEntry) entries.nextElement();
boolean isDirectory = zipEntry.isDirectory();
String name = zipEntry.getName();
if(isDirectory){
createFolder(true,name);
}else{
createFolder(false,name);
InputStream in = zipFile.getInputStream(zipEntry);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(name));
byte[] bys = new byte[2048];
int read = 0;
while((read = in.read(bys))!=-1){
bos.write(bys, 0, read);
bos.flush();
}
bos.close();
}
}
zipFile.close();
}
public static void main(String[] args) {
try {
unzip("ant.zip");
} catch (IOException e) {
System.out.println("文件解压失败");
return;
}
System.out.println("文件解压成功");
}
}