Java Zip UnZip

압축 과 압축 해 제 는 일반적으로 다음 과 같은 두 가지 방식 을 사용 할 수 있다.
  • 자바 유 틸 리 티 에서 제공 하 는 도구 류
  • Apache 에서 제공 하 는 도구 클래스
  • 자바 안에 자바 util. zip 라 는 가방 이 있 습 니 다. zip 파일 압축 을 제공 하지만 인 코딩 할 때 매우 불편 합 니 다.인 코딩 량 이 너무 많 습 니 다. 검색 을 통 해 apache 에 간단 한 방법 을 제공 하여 zip 파일 의 압축 과 압축 을 푸 는 것 을 발견 하 였 습 니 다.http://ant.apache.org/。다운로드 주소: org. apache. tools. zip.다운로드 하여 압축 을 풀 면 이 가방 의 ant. jar 에 zip 파일 압축 과 압축 해제 기능 코드 가 제 공 됩 니 다.항목 에서 이 라 이브 러 리 를 참조 합 니 다.
    압축 파일 이나 폴 더 압축 은 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();
    			}
    		}
    	}
    
    }
    
    

    좋은 웹페이지 즐겨찾기