文件压缩,打包

文件压缩

public static void zipFiles() throws Exception{
		//准备压缩的文件目录
    	File sourceFile = new File("/home/admin/YYY/templateFile");
		//压缩后文件
    	File targetFile = new File("/home/admin/YYY/template.zip");
    	ZipOutputStream out=new ZipOutputStream(new FileOutputStream(targetFile));
    	
    	File[] listFiles = sourceFile.listFiles();
    	for (File file : listFiles) {
			zipFile(out,file.getName(),file,true);
		}
    	out.close();
    }
	
	/**
	 * KeepDirStructure:是否保留文件层级
	**/
    public static void zipFile(ZipOutputStream out,String fileName,File sourceFile,Boolean KeepDirStructure) throws IOException{
    	byte[] buf=new byte[1024];
    	
    	if(sourceFile.isFile()){
    		FileInputStream in=new FileInputStream(sourceFile);
    		out.putNextEntry(new ZipEntry(fileName));
    		int len;
    		while((len=in.read(buf))>0){
    			out.write(buf,0,len);
    		}
    		out.closeEntry();
    		in.close();
    		System.out.println(fileName+"压缩完成.");
    	}else{
    		File[] listFiles = sourceFile.listFiles();
    		if(listFiles==null||listFiles.length==0){
    			// 空文件夹的处理
				out.putNextEntry(new ZipEntry(fileName + "/"));
				// 没有文件,不需要文件的copy
				out.closeEntry();
    		}else{
    			for (File file : listFiles) {
    				if(true==KeepDirStructure){
    					zipFile(out,fileName+"/"+file.getName(),file,KeepDirStructure);
    				}else{
    					zipFile(out,file.getName(),file,KeepDirStructure);
    				}
    			}
    		}
    	}
    	sourceFile.delete();
    }

  

posted @ 2018-04-18 11:52  hkEnjoy  阅读(93)  评论(0编辑  收藏  举报