Java Zip UnZip
압축 파일 이나 폴 더 압축 은 gb 2312 인 코딩 을 사용 합 니 다. 다른 인 코딩 방식 은 파일 이름과 폴 더 이름 이 중국 어 를 사용 하 는 상황 에서 압축 하여 난 장 판 으로 만 들 수 있 습 니 다.압축 할 파일 이나 폴 더 는 "c: / abc" 또는 "c: / abc / aaa. txt" 형식 으로 압축 경 로 를 지정 하 는 것 을 권장 합 니 다. "c: \ abc" 또는 "c: \ abc \ aaa. txt" 형식 으로 경 로 를 지정 하면 압축 과 압축 해제 경로 가 예상 치 못 하 게 고장 날 수 있 습 니 다.
ApacheUnZip
package com.java.base.util.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ApacheUnZip {
public static void main(String[] args){
unzip("D:\\download\\jQuery-File-Upload-master824320160819.zip", "D:\\download");
}
public static void unzip(String zipFile,String outputPath){
if(outputPath == null)
outputPath = "";
else
outputPath+=File.separator;
// 1.0 Create output directory
File outputDirectory = new File(outputPath);
if(outputDirectory.exists())
outputDirectory.delete();
outputDirectory.mkdir();
// 2.0 Unzip (create folders & copy files)
try {
// 2.1 Get zip input stream
ZipInputStream zip = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry entry = null;
int len;
byte[] buffer = new byte[1024];
// 2.2 Go over each entry "file/folder" in zip file
while((entry = zip.getNextEntry()) != null){
if(!entry.isDirectory()){
System.out.println("-"+entry.getName());
// create a new file
File file = new File(outputPath +entry.getName());
// create file parent directory if does not exist
if(!new File(file.getParent()).exists())
new File(file.getParent()).mkdirs();
// get new file output stream
FileOutputStream fos = new FileOutputStream(file);
// copy bytes
while ((len = zip.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
}
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ApacheZip
package com.java.base.util.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
* java java.util.zip zip , 。 , , apache zip http://ant.apache.org/。 :org.apache.tools.zip
* , ant.jar zip 。 。
*
* gb2312 , 。。。
* "c:/abc" "c:/abc/aaa.txt" , "c:\\abc" "c:\\abc\\aaa.txt" , 。。。
*
* @author cnhuangsl
*
*/
public class ApacheZip {
/**
*
* @param args
*/
public static void main(String[] args) {
try {
ZIP("D:/test/src", "D:/test/src.zip");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* ( )
*
* @param source
* @param zipFileName
* @throws IOException
*/
private static void ZIP(String source, String zipFileName) throws IOException {
ZipOutputStream zos = new ZipOutputStream(new File(zipFileName));
zos.setEncoding("gb2312");
File file = new File(source);
if (file.isDirectory()) {
//
ZIPDIR(source, zos, file.getName() + "/");// / , \\ , 。
} else {
//
ZIPDIR(source, zos, new File(file.getParent()).getName() + "/");
ZIPFILE(source, zos, new File(file.getParent()).getName() + "/" + file.getName());
}
zos.closeEntry();
zos.close();
}
/**
*
*
* @param sourceDir
* @param zos
* @param target ( )
* @throws IOException
*/
private static void ZIPDIR(String sourceDir, ZipOutputStream zos, String target) throws IOException {
ZipEntry ze = new ZipEntry(target);
zos.putNextEntry(ze);
//
File f = new File(sourceDir);
File[] fileList = f.listFiles();
if (fileList != null) {
//
for (File subFile : fileList) {
if (subFile.isDirectory()) {
//
ZIPDIR(subFile.getPath(), zos, target + subFile.getName() + "/");
} else {
// ,
ZIPFILE(subFile.getPath(), zos, target + subFile.getName());
}
}
}
}
/**
*
*
* @param sourceFileName
* @param zos
* @param target ( )
* @throws IOException
*/
public static void ZIPFILE(String sourceFileName, ZipOutputStream zos, String target) throws IOException {
System.out.println(target);
ZipEntry ze = new ZipEntry(target);
zos.putNextEntry(ze);
FileInputStream fis = new FileInputStream(sourceFileName);
byte[] buffer = new byte[1024];
int location = 0;
while((location = fis.read(buffer)) != -1) {
zos.write(buffer, 0, location);
}
fis.close();
}
}
UtilUnZip
package com.java.base.util.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
// JAVA
public class UtilUnZip {
public static void main(String[] args) {
//
File zipFile = new File("c:" + File.separator + "haha.zip");
//
File dir = new File("c:" + File.separator + "unzip_haha");
//
OutputStream out = null;
//
ZipInputStream zin = null;
try {
if (!dir.exists()) // ,
{
dir.mkdirs();
}
zin = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry entry = null;//
while ((entry = zin.getNextEntry()) != null) {
out = new FileOutputStream(new File(dir, entry.getName()));
int temp = 0;
while ((temp = zin.read()) != -1) {
out.write(temp);
}
out.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
zin.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
UtilZip
package com.java.base.util.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
// JAVA
public class UtilZip {
public static void main(String[] args) {
// TODO Auto-generated method stub
//
File dir = new File("c:" + File.separator + "haha");
//
File zipFile = new File("c:" + File.separator + "haha.zip");
//
ZipOutputStream zout = null;
// ,
InputStream in = null;
try {
//
zout = new ZipOutputStream(new FileOutputStream(zipFile));
//
File[] files = dir.listFiles();
//
zout.setComment("my zip file demo");
for (int i = 0; i < files.length; i++) {
in = new FileInputStream(files[i]);
// , 。
zout.putNextEntry(new ZipEntry(files[i].getName()));
int temp = 0;
while ((temp = in.read()) != -1) {
zout.write(temp);
}
in.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
zout.close();
} 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에 따라 라이센스가 부여됩니다.