程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java生成緊縮文件示例代碼

java生成緊縮文件示例代碼

編輯:關於JAVA

java生成緊縮文件示例代碼。本站提示廣大學習愛好者:(java生成緊縮文件示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是java生成緊縮文件示例代碼正文


代碼:


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

/**
 * @project: Test
 * @author chenssy
 * @date 2013-7-28
 * @Description: 文件緊縮對象類
 *                   將指定文件/文件夾緊縮成zip、rar緊縮文件
 */
public class CompressedFileUtil {
    /**
     * 默許結構函數
     */
    public CompressedFileUtil(){

    }

    /**
     * @desc 將源文件/文件夾生成指定格局的緊縮文件,格局zip
     * @param resourePath 源文件/文件夾
     * @param targetPath  目標緊縮文件保留途徑
     * @return void
     * @throws Exception
     */
    public void compressedFile(String resourcesPath,String targetPath) throws Exception{
        File resourcesFile = new File(resourcesPath);     //源文件
        File targetFile = new File(targetPath);           //目標
        //假如目標途徑不存在,則新建
        if(!targetFile.exists()){    
            targetFile.mkdirs(); 
        }

        String targetName = resourcesFile.getName()+".zip";   //目標緊縮文件名
        FileOutputStream outputStream = new FileOutputStream(targetPath+"\\"+targetName);
        ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(outputStream));

        createCompressedFile(out, resourcesFile, "");

        out.close(); 
    }

    /**
     * @desc 生成緊縮文件。
     *                  假如是文件夾,則應用遞歸,停止文件遍歷、緊縮
     *       假如是文件,直接緊縮
     * @param out  輸入流
     * @param file  目的文件
     * @return void
     * @throws Exception
     */
    public void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{
        //假如以後的是文件夾,則停止進一步處置
        if(file.isDirectory()){
            //獲得文件列表信息
            File[] files = file.listFiles();
            //將文件夾添加到下一級打包目次
            out.putNextEntry(new ZipEntry(dir+"/"));

            dir = dir.length() == 0 ? "" : dir +"/";

            //輪回將文件夾中的文件打包
            for(int i = 0 ; i < files.length ; i++){
                createCompressedFile(out, files[i], dir + files[i].getName());         //遞歸處置
            }
        }
        else{   //以後的是文件,打包處置
            //文件輸出流
            FileInputStream fis = new FileInputStream(file);

            out.putNextEntry(new ZipEntry(dir));
            //停止寫操作
            int j =  0;
            byte[] buffer = new byte[1024];
            while((j = fis.read(buffer)) > 0){
                out.write(buffer,0,j);
            }
            //封閉輸出流
            fis.close();
        }
    }

    public static void main(String[] args){
        CompressedFileUtil compressedFileUtil = new CompressedFileUtil();

        try {
            compressedFileUtil.compressedFile("G:\\zip", "F:\\zip");
            System.out.println("緊縮文件曾經生成...");
        } catch (Exception e) {
            System.out.println("緊縮文件生成掉敗...");
            e.printStackTrace();
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved