java 압축 풀기
최근 에 자바 로 압축 하 는 예 를 보 았 습 니 다. 스스로 정리 하고 싶 습 니 다. 이 방법 은 압축 파일 을 압축 해제 하고 파일 이름 에 test. zip 을 넣 을 수 있 습 니 다. test. zip 안에 얼마나 많은 파일 과 폴 더 가 있 든 지 간 에 압축 을 풀 수 있 습 니 다. 압축 을 푼 파일 을 test. zip 코드 로 압축 할 수 있 습 니 다. 다음 과 같 습 니 다.
package bean;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
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.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.swing.text.html.parser.Entity;
public class FileCompressAndUnCompress {
public static boolean fileUnCompress(String inputFilePath, String outputDirectory){
boolean flag = true; //
ZipInputStream zis = null; // zip
ZipFile zfile = null; //
try {
zfile = new ZipFile(new File(inputFilePath));
zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(inputFilePath)));
} catch (FileNotFoundException e) {
flag = false;
e.printStackTrace();
} catch (ZipException e) {
flag = false;
e.printStackTrace();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
ZipEntry zipEntry = null;
// zip
try {
while((zipEntry = zis.getNextEntry()) != null){
// zip
if(zipEntry.isDirectory()){
String directorName = zipEntry.getName();
File director = new File(outputDirectory + directorName);
director.mkdir();
}else{
File file = new File(outputDirectory + File.separator + zipEntry.getName());
//
file.createNewFile();
//
InputStream is = zfile.getInputStream(zipEntry);
//
FileOutputStream fos = new FileOutputStream(file);
//
byte [] byteBuffer=new byte[1024*8];
int i = -1;
while((i = is.read(byteBuffer)) != -1){
fos.write(byteBuffer,0,i);
}
is.close();
fos.close();
}
}
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
public static boolean fileCompress(File file,String basePath,ZipOutputStream zos){
boolean flag = true; //
// zip , zip
if(file.isDirectory()){
//
File [] files = file.listFiles();
for(File f:files){
try {
zos.putNextEntry(new ZipEntry(basePath + File.separator));
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
basePath = basePath.length() == 0 ? "" : basePath + "/";
//
fileCompress(f,basePath + f.getName(), zos);
}
}else{
try {
if(basePath.length()>0){
zos.putNextEntry(new ZipEntry(basePath));
}else{
zos.putNextEntry(new ZipEntry(basePath+ file.getName()));
}
FileInputStream fis = new FileInputStream(file);
//
byte [] byteBuffer=new byte[1024*8];
int i = -1;
while((i = fis.read(byteBuffer)) != -1){
zos.write(byteBuffer,0,i);
}
zos.closeEntry();
fis.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
}
return flag;
}
public static void main(String[] args) throws Exception {
ZipOutputStream zos =new ZipOutputStream(new FileOutputStream("D:\\test\\unzipApk\\temp.zip"));
File zipFile = new File("D:\\test\\unzipApk\\temp.zip");
zipFile.getParentFile().mkdirs();
//fileUnCompress("D:\\test\\unzipApk\\temp.zip", "D:\\test\\unzipApk\\");
File file = new File("D:\\test\\unzipApk\\temp");
fileCompress(file,"temp",zos);
zos.close();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.