一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java生成壓縮文件示例代碼

java生成壓縮文件示例代碼

2019-10-21 12:41java代碼網(wǎng) Java教程

在工作過(guò)程中,需要將一個(gè)文件夾生成壓縮文件,然后提供給用戶下載。寫(xiě)了一個(gè)壓縮文件的工具類(lèi)。該工具類(lèi)支持單個(gè)文件和文件夾壓縮

代碼:

 

復(fù)制代碼代碼如下:


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: 文件壓縮工具類(lèi)
 *                   將指定文件/文件夾壓縮成zip、rar壓縮文件
 */
public class CompressedFileUtil {
    /**
     * 默認(rèn)構(gòu)造函數(shù)
     */
    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 生成壓縮文件。
     *                  如果是文件夾,則使用遞歸,進(jìn)行文件遍歷、壓縮
     *       如果是文件,直接壓縮
     * @param out  輸出流
     * @param file  目標(biāo)文件
     * @return void
     * @throws Exception 
     */
    public void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{
        //如果當(dāng)前的是文件夾,則進(jìn)行進(jìn)一步處理
        if(file.isDirectory()){
            //得到文件列表信息
            File[] files = file.listFiles();
            //將文件夾添加到下一級(jí)打包目錄
            out.putNextEntry(new ZipEntry(dir+"/"));

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

            //循環(huán)將文件夾中的文件打包
            for(int i = 0 ; i < files.length ; i++){
                createCompressedFile(out, files[i], dir + files[i].getName());         //遞歸處理
            }
        }
        else{   //當(dāng)前的是文件,打包處理
            //文件輸入流
            FileInputStream fis = new FileInputStream(file);

            out.putNextEntry(new ZipEntry(dir));
            //進(jìn)行寫(xiě)操作
            int j =  0;
            byte[] buffer = new byte[1024];
            while((j = fis.read(buffer)) > 0){
                out.write(buffer,0,j);
            }
            //關(guān)閉輸入流
            fis.close();
        }
    }

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

        try {
            compressedFileUtil.compressedFile("G:\\zip", "F:\\zip");
            System.out.println("壓縮文件已經(jīng)生成...");
        } catch (Exception e) {
            System.out.println("壓縮文件生成失敗...");
            e.printStackTrace();
        }
    }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品中文騷妇女内射 | 美女主播免费观看 | 天天操天天草 | 91九色porn偷拍在线 | 麻豆视频入口 | 天天爱天天做天天爽天天躁 | 美女啪啪国产 | 双性人bbww欧美双性 | 黄瓜视频黄版 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 亚洲女人国产香蕉久久精品 | 亚洲人成网站在线观看妞妞网 | 国产偷窥女洗浴在线观看亚洲 | 天天综合网网欲色 | 经典千人斩一区二区视频 | 国产馆在线观看免费的 | 久久re热在线视频精69 | 特级av毛片免费观看 | les女同h高h喷水 | 桃乃木香奈作品在线 | 天天欲色成人综合网站 | 色播影院性播影院私人影院 | 国产尤物精品视频 | 隔壁老王国产在线精品 | 羞羞污视频 | 亚洲欧美在线观看首页 | 精品国产乱码久久久久久人妻 | 精品国产品香蕉在线观看 | 视频在线观看高清免费看 | 插入肥臀| 精品国产理论在线观看不卡 | 操尼姑 | 1769亚洲欧美资源站 | 四虎传媒 | 九九99精品 | 黑人操日本妞 | 亚洲国产一区二区三区青草影视 | 国产福利一区二区三区四区 | 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 | 午夜亚洲| 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 |