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

服務(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();
        }
    }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人天堂中文字幕 | 激情视频在线播放 | 精品国产精品国产偷麻豆 | a v在线男人的天堂观看免费 | 亚洲成在人线视频 | 99热国产这里只有精品99 | 日本高h| 精品国产福利片在线观看 | 国产乱码免费卡1卡二卡3卡四 | 国产小青蛙 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 日韩成人在线免费视频 | 国产外围| 亚洲视频在线观看地址 | 美女露全身永久免费网站 | 国产精品久久久久毛片 | 被教官揉了一晚上的奶小说 | 青青青在线观看国产精品 | 色综合久久九月婷婷色综合 | 无码毛片内射白浆视频 | 99re热精品这里精品 | 久久99精品涩AV毛片观看 | 高清视频在线观看+免费 | 国产午夜免费视频 | 日韩欧美一区黑人vs日本人 | 俄罗斯13一14处出血视频在线 | 久久久精品成人免费看 | 精品丰满人妻无套内射 | 男女男精品视频免费观看 | 久久免费看少妇级毛片蜜臀 | 精品欧美一区二区三区四区 | 啪啪免费入口网站 | 免费特黄一级欧美大片 | 交换朋友夫妇3中文字幕 | 免费在线公开视频 | 饭冈加奈子黑人解禁在线播放 | 9420高清视频在线观看网百度 | 999精品视频在线观看 | 亚洲日本在线观看网址 | 俄罗斯烧性春三级k8播放 | 欧美香蕉人人人人人人爱 |