文件压缩、解压工具类。文件压缩格式为zip

package com.JUtils.file;

import java.io.BufferedOutputStream;
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.ZipOutputStream;

/**
 * 文件压缩、解压工具类。文件压缩格式为zip
 *
 * @Author:chenssy
 * @date:2016年5月24日 下午9:16:01
 */
public class ZipUitls {
    /** 文件后缀名 */
    private static final String ZIP_FILE_SUFFIX = ".zip";

    /**
     * 压缩文件
     *
     * @author:chenssy
     * @date : 2016年5月24日 下午9:56:36
     *
     * @param :resourcePath
     *                         源文件
     * @param :targetPath
     *                         目的文件,保存文件路径
     */

    public static void main(String[] args) {
        String fileName = "D:/file/compare.json";
        String file = "D:/file/ZipUitls";
        zipFile(fileName,file);
    }
    public static void zipFile(String resourcePath,String targetPath){
        File resourcesFile = new File(resourcePath);
        File targetFile = new File(targetPath);

        //目的文件不存在,则新建
        if(!targetFile.exists()){
            targetFile.mkdirs();
        }
        //文件名
        String targetName = resourcesFile.getName() + ZIP_FILE_SUFFIX;

        ZipOutputStream out = null;
        try {
            FileOutputStream outputStream = new FileOutputStream(targetPath+"//"+targetName);
            out = new ZipOutputStream(new BufferedOutputStream(outputStream));

            compressedFile(out, resourcesFile, "");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally{
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     *
     * @author:chenssy
     * @date : 2016年5月24日 下午10:00:22
     *
     * @param out
     * @param : resourcesFile
     * @param dir
     */
    private static void compressedFile(ZipOutputStream out, File file, String dir) {
        FileInputStream fis = null;
        try {
            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++) {
                    compressedFile(out, files[i], dir + files[i].getName()); // 递归处理
                }
            } else {     //如果是文件则打包处理
                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);
                }
                // 关闭输入流
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

原文地址:https://www.cnblogs.com/JonaLin/p/11277900.html

时间: 2024-11-05 11:52:16

文件压缩、解压工具类。文件压缩格式为zip的相关文章

Linux压缩解压工具--日常学习

Date:2017-04-08 命令(对应格式):gzip(.gz)  bzip2(.bz2)  xz(.xz)  compress(.z)   tar(.tar) 1.gzip 语法:gzip  选项  FILE 常用选项:-d   -#    -c (1)-d(decompressiom):解压 解压的方式有两种:"gizp  -d   FILE" 和"gunzip  FIEL" eg: tmp]# ls -lh messages(-h:human-readdb

使用SharpZIpLib写的压缩解压操作类

使用SharpZIpLib写的压缩解压操作类,已测试. public class ZipHelper { /// <summary> /// 压缩文件 /// </summary> /// <param name="directory"></param> /// <param name="targetPath"></param> public static void Zip(string dir

Keka for Mac(OS平台压缩解压工具) V1.1.23(3418)汉化版

Keka Mac版是一款比较常用的压缩软件,这个解压缩软件基本可以满足mac os平台的日常解压缩需求,体积小,简单易用,速度较快.是一款好用的解压缩软件.基本上,它只有三项优势,就是免费,免费和免费.支持压缩:7z, Zip, Tar, Gzip, Bzip2.支持解压:RAR, 7z, Lzma, Zip, Tar, Gzip, Bzip2, ISO, EXE, CAB, PAX, ACE (PPC). 地址:Keka for Mac Keka for Mac安装教程 下载软件完成后,打开软

c#压缩解压帮助类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using ICSharpCode.SharpZipLib.Zip; namespace GzRMIS.Main.Business { public class ZipHelper { /// <summary> /// 存放待压缩的文件的绝对路径 /// </summary> p

Linux基本命令—权限管理、文件搜索、帮助、压缩解压、网络通信

Linux基本命令-权限管理.文件搜索.帮助.压缩解压.网络通信 Linux 权限管理命令 文件搜索命令 帮助命令 压缩解压命令 网络通信指令 2017-11-12 权限管理命令 chmod 改变文件或目录权限: 格式:chmod [{ugo} {+-=} {rwx}] [文件或目录]:或 [mode=421] [文件或目录] -u:所有者: -g:所属组: -o:其他人 -rwx:可读可写可执行:对应权值 r-4.w-2.x-1,可按照数字改变权限:eg.rwxr-xr--表示754: eg.

压缩解压打包工具基础

目录 前言 compress压缩解压工具 gzip压缩解压工具 bzip2压缩解压工具 xz压缩解压工具 zip压缩打包工具 tar打包工具 split文件分割 cpio打包压缩 前言 无论是我们的个人笔记本台式机还是服务器,它们的存储设备可以存储的东西都是有限的,不可能无限的存储东西,除非我们不停地增加硬盘的数量,但是这又是非常不现实的,因为我们需要无限的空间,很多时候我们需要存储大量的不可删除的数据时,就会采用压缩的方式,这样我们就可以即剩下了很多空间同时又保存了我们的文件. 在我们的常用的

基于哈夫曼编码的压缩解压程序

这个程序是研一上学期的课程大作业.当时,跨专业的我只有一点 C 语言和数据结构基础,为此,我查阅了不少资料,再加上自己的思考和分析,实现后不断调试.测试和完善,耗时一周左右,在 2012/11/19 完成.虽然这是一个很小的程序,但却是我完成的第一个程序. 源码托管在 Github:点此打开链接 一.问题描述: 名称:基于哈夫曼编码的文件压缩解压 目的:利用哈夫曼编码压缩存储文件,节省空间 输入:任何格式的文件(压缩)或压缩文件(解压) 输出:压缩文件或解压后的原文件 功能:利用哈夫曼编码压缩解

C# GZipStream 压缩 解压

关于GZipStream压缩解压,网上找了很多资料,完整的不多,要么是针对字符串压缩解压缩的,要么只实现了针对单个文件的压缩解压缩,还有的不支持子文件夹的压缩,实用性都不是很大. 以下整理了压缩解压缩的代码,供以后拿出来翻阅,在项目中可以直接使用这3个类,已通过测试. 1.首先是有一个描述要压缩的文件类GZipFileInfo,包含了一些文件信息 /// <summary> /// 要压缩的文件信息 /// </summary> public class GZipFileInfo

Linux下的压缩解压命令

1. linux zip命令 压缩 zip -r filename.zip ./*                  // 将当前目录下的所有文件和文件夹全部压缩成 filename.zip文件 -r表示递归压缩子目录下所有文件 解压 unzip -d test filename.zip            // 把filename.zip文件解压到 ./test -d:-d test 指明将文件解压缩到./test目录下: 2. linux tar命令 -c: 建立压缩档案 -x: 解压 -