JAVA 압축 파일
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.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author zhaoliangyuan
* @E-mail [email protected]
* @dateTime 2010/7/20 10:44:50 :
*
*/
public class Test24 {
public static void main(String[] args) {
Test24 recursiveZip = new Test24();
System.out.println("==== ====");
try {
OutputStream os = new FileOutputStream("D:/test.rar");
BufferedOutputStream bs = new BufferedOutputStream(os);
ZipOutputStream zo = new ZipOutputStream(bs);
// recursiveZip.zip("e:/recursive-zip/ .txt", new
// File("e:/recursive-zip"), zo, true, true);
recursiveZip.zip("D:/temp", new File("D:/temp"), zo, true, true);
zo.closeEntry();
zo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("==== ====");
}
/**
* @param path
* , , .
* @param basePath
* path , new File(path), : zip ,
* null , .
* @param zo
*
* @param isRecursive
*
* @param isOutBlankDir
* , true, baseFile null.
* @throws IOException
*/
public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {
File inFile = new File(path);
File[] files = new File[0];
if (inFile.isDirectory()) { //
files = inFile.listFiles();
} else if (inFile.isFile()) { //
files = new File[1];
files[0] = inFile;
}
byte[] buf = new byte[1024];
int len;
// System.out.println("baseFile: "+baseFile.getPath());
for (int i = 0; i < files.length; i++) {
String pathName = "";
if (basePath != null) {
if (basePath.isDirectory()) {
pathName = files[i].getPath().substring(basePath.getPath().length() + 1);
} else {//
pathName = files[i].getPath().substring(basePath.getParent().length() + 1);
}
} else {
pathName = files[i].getName();
}
System.out.println(pathName);
if (files[i].isDirectory()) {
if (isOutBlankDir && basePath != null) {
zo.putNextEntry(new ZipEntry(pathName + "/")); //
}
if (isRecursive) { //
zip(files[i].getPath(), basePath, zo, isRecursive, isOutBlankDir);
}
} else {
FileInputStream fin = new FileInputStream(files[i]);
zo.putNextEntry(new ZipEntry(pathName));
while ((len = fin.read(buf)) > 0) {
zo.write(buf, 0, len);
}
fin.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에 따라 라이센스가 부여됩니다.