자바 파일 압축 및 압축 풀기
1. 중국어 문 제 를 해 결 했 습 니 다. jdk 의 가방 이 아니 라 응용 한 ant. jar 입 니 다.
코드:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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 Test {
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
//test.unzipFiles("D:/xmlZipFils/test.zip");
test.zipFiles();
}
/**
* 压缩文件
*/
public void zipFiles(){
File fromFiles = new File("d:\\table2xml");
if(!fromFiles.exists()){
fromFiles.mkdirs();
}
try {
//输出流
OutputStream os = new FileOutputStream("D:\\xmlZipFils\\test.zip");
ZipOutputStream zipos = new ZipOutputStream(os);
File file = null;
ZipEntry zipEntry = null;
InputStream inputStream = null;
File[] files = fromFiles.listFiles(new FileFilter(){
public boolean accept(File pathname) {
// TODO Auto-generated method stub
boolean flag = false;
if(pathname.getName().indexOf("桥接测试@weibainju_1181")!=-1){
flag = true;
}
return flag;
}
});
doFiles(files,zipos,true);
zipos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 压缩时对文件和目录进行处理
* @param 某目录下面的所有文件和目录
* @param zip数出流
* @param 是否是要压缩的顶级目录
*/
public static void doFiles(File[] files,ZipOutputStream zipos,boolean isFrist){
InputStream inputStream =null;
ZipEntry zipEntry = null;
try {
for(int i =0;i<files.length;i++){
if(!files[i].isDirectory()){
inputStream = new FileInputStream(files[i]);
if(isFrist==false){
zipEntry = new ZipEntry(files[i].getParentFile().getName()+File.separatorChar+files[i].getName());
}else{
zipEntry = new ZipEntry(files[i].getName());
}
zipos.putNextEntry(zipEntry);
int count =0;
while((count=inputStream.read())!=-1){
zipos.write(count);
}
inputStream.close();
}else{
File[] files1 = files[i].listFiles();
doFiles(files1,zipos,false);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 解压缩文件
*/
public void unzipFiles(String zipFilePath){
String outDir = "d:/unzipXml";
try {
File unzipDir = new File(outDir);
ZipFile unzipFile = new ZipFile(zipFilePath);
Enumeration e = unzipFile.getEntries();
InputStream zipis = null;
ZipEntry zipEntry;
while(e.hasMoreElements()){
zipEntry = (ZipEntry) e.nextElement();
zipis = unzipFile.getInputStream(zipEntry);
if(zipEntry.isDirectory()){
File file = new File(outDir,zipEntry.getName());
if(!file.exists()){
file.mkdirs();
}
}else{
if(zipEntry.getName().indexOf("/")>0){
File file = new File(outDir+File.separatorChar+zipEntry.getName().substring(0,zipEntry.getName().indexOf("/")));
if(!file.exists()){
file.mkdirs();
}
}
File file = new File(outDir,zipEntry.getName());
OutputStream os = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(os);
int count = 0;
while((count = zipis.read())!=-1){
dos.write(count);
}
zipis.close();
os.close();
dos.close();
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
본인 오리지널.전재 환영 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.