java代码实现压缩文件.gz格式,解压后无后缀名问题

package com.ctid.cps.util.gzipUtil;

import com.ctid.util.file.FileUtil;
import com.ctid.util.file.GZip;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**

  • GZIP工具

  • @author
    */
    public class GzipUtils {

    public static final int BUFFER = 1024;
    public static final String EXT = “.gz”;

    /**

    • 数据压缩

    • @param data

    • @return

    • @throws Exception
      */
      public static byte[] compress(byte[] data) throws Exception {
      ByteArrayInputStream bais = new ByteArrayInputStream(data);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      // 压缩
      compress(bais, baos);

      byte[] output = baos.toByteArray();

      baos.flush();
      baos.close();

      bais.close();

      return output;
      }

    /**

    • 文件压缩
    • @param file
    • @throws Exception
      */
      public static void compress(File file) throws Exception {
      compress(file, true);
      }

    /**

    • 文件压缩

    • @param file

    • @param delete 是否删除原始文件

    • @throws Exception
      */
      public static void compress(File file, boolean delete) throws Exception {
      FileInputStream fis = new FileInputStream(file);
      FileOutputStream fos = new FileOutputStream(file.getPath() + EXT);

      compress(fis, fos);

      fis.close();
      fos.flush();
      fos.close();

      if (delete) {
      file.delete();
      }
      }

    /**

    • 数据压缩

    • @param is

    • @param os

    • @throws Exception
      */
      public static void compress(InputStream is, OutputStream os)
      throws Exception {

      GZIPOutputStream gos = new GZIPOutputStream(os);

      int count;
      byte data[] = new byte[BUFFER];
      while ((count = is.read(data, 0, BUFFER)) != -1) {
      gos.write(data, 0, count);
      }

      gos.finish();

      gos.flush();
      gos.close();
      }

    /**

    • 文件压缩
    • @param path
    • @throws Exception
      */
      public static void compress(String path) throws Exception {
      compress(path, true);
      }

    /**

    • 文件压缩
    • @param path
    • @param delete 是否删除原始文件
    • @throws Exception
      */
      public static void compress(String path, boolean delete) throws Exception {
      File file = new File(path);
      compress(file, delete);
      }

    /**

    • 文件压缩
    • @param
    • @param
    • @throws Exception
      */
      public static void compress(String inputFileName, String outputFileName)
      throws Exception {
      FileInputStream inputFile = new FileInputStream(inputFileName);
      FileOutputStream outputFile = new FileOutputStream(outputFileName);
      compress(inputFile, outputFile);
      inputFile.close();
      outputFile.flush();
      outputFile.close();
      }

    /**

    • 数据解压缩

    • @param data

    • @return

    • @throws Exception
      */
      public static byte[] decompress(byte[] data) throws Exception {
      ByteArrayInputStream bais = new ByteArrayInputStream(data);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      // 解压缩

      decompress(bais, baos);

      data = baos.toByteArray();

      baos.flush();
      baos.close();

      bais.close();

      return data;
      }

    /**

    • 文件解压缩
    • @param file
    • @throws Exception
      */
      public static void decompress(File file) throws Exception {
      decompress(file, true, null);
      }

    /**

    • 文件解压缩

    • @param file 需要解压的文件

    • @param delete 是否删除原始文件

    • @param outPath 解压文件的输出路径

    • @throws Exception
      */
      public static void decompress(File file, boolean delete, String outPath)
      throws Exception {
      FileInputStream fis = new FileInputStream(file);
      FileOutputStream fos = null;
      if (outPath == null || outPath == “”) {
      fos = new FileOutputStream(file.getPath().replace(EXT, “”));
      } else {
      File files = new File(outPath);
      //判断文件是否存在,不存在,则创建
      FileUtil.mkDir(files);//此处调用了递归创建文件夹,没有写出,网上很多
      //文件输出流参数中,需要指定文件解压后的文件名,这里,用文件的原名称
      fos = new FileOutputStream(outPath + File.separator
      + file.getName().replace(EXT, “”));
      }

      decompress(fis, fos);
      fis.close();
      fos.flush();
      fos.close();

      if (delete) {
      file.delete();
      }
      }

    /**

    • 文件解压缩
    • @param
    • @param
    • @throws Exception
      */
      public static void decompress(String inputFileName, String outputFileName)
      throws Exception {
      FileInputStream inputFile = new FileInputStream(inputFileName);
      FileOutputStream outputFile = new FileOutputStream(outputFileName);
      decompress(inputFile, outputFile);
      inputFile.close();
      outputFile.flush();
      outputFile.close();
      }

    /**

    • 数据解压缩

    • @param is

    • @param os

    • @throws Exception
      */
      public static void decompress(InputStream is, OutputStream os)
      throws Exception {
      GZIPInputStream gis = new GZIPInputStream(is);
      //GZIPInputStream gis = new GZIPInputStream(new BufferedInputStream(is));
      int count;
      byte data[] = new byte[BUFFER];
      while ((count = gis.read(data, 0, BUFFER)) != -1) {
      os.write(data, 0, count);
      }

      gis.close();
      }

    /**

    • 文件解压缩
    • @param path
    • @throws Exception
      */
      public static void decompress(String path) throws Exception {
      decompress(path, true, null);
      }

    /**

    • 文件解压缩(解压单个文件)
    • @param path 需要解压的文件路径(包含文件名称)
    • @param delete 是否删除原始文件(true:删除;false:保留)
    • @param outPath 解压后文件的输出路径,如果该参数的值为 null,则输出解压文件到当前文件夹
    • @throws Exception
      */
      public static void decompress(String path, boolean delete, String outPath)
      throws Exception {
      File file = new File(path);
      decompress(file, delete, outPath);
      }

    //测试,通过遍历,解压一个文件夹中的所有文件
    /* public static void main(String[] args) throws Exception {
    long startTime = System.currentTimeMillis();// 记录开始时间
    String path = “D:\compreFile\test2”;
    File file = new File(path);
    String files[] = file.list();
    System.out.println(“共 " + files.length + " 个文件”);
    Thread.sleep(2000);
    int num = 0;
    List list = new ArrayList();
    for (int x = 0; x < files.length; x++) {
    try {
    //调用解压方法
    decompress(path + “\” + files[x], false, “D:\compreFile\test2”);
    //GZip.unpackTarGZ(file,“D:\compreFile\test2”);
    } catch (Exception e) {
    list.add(files[x]);
    continue;
    }
    ++num;
    System.out.println(“第 " + num + " 个文件.tar.gz解压成功!!”);
    }
    // String tarPath = “D:\compreFile\test2\”;
    // File fileTar = new File(tarPath);
    // String filesTar[] = fileTar.list();
    // int nber = 0;
    // for (int j = 0; j < filesTar.length; j++) {
    // try {
    // //调用解压方法
    // tarToFile.uncompress(tarPath + filesTar[j], “D:\compreFile\test”);
    // } catch (Exception e) {
    // list.add(files[j]);
    // continue;
    // }
    // ++nber;
    // System.out.println(“第 " + nber + " 个文件.tar解压成功!!”);
    // }
    for(int x=0;x<list.size();x++){
    System.out.println(list.get(x).toString());
    }
    System.out.println("问题文件 " + list.size() + " 个 ");

    public static void main(String[] args) throws Exception {
    TarToFile tarToFile = new TarToFile();
    long startTime = System.currentTimeMillis();// 记录开始时间
    String path = “D:\JAVA压缩解压\”;
    File file = new File(path);
    String files[] = file.list();
    System.out.println(“共 " + files.length + " 个文件”);
    Thread.sleep(2000);
    int num = 0;
    List list = new ArrayList();
    for (int x = 0; x < files.length; x++) {
    try {
    //调用压缩方法
    compress(path + files[x], “D:\compreFile\test2\ceshi1” + num + “.gz”);
    System.out.println(path + files[x]);
    } catch (Exception e) {
    System.out.println(e);
    list.add(files[x]);
    continue;
    }
    ++num;
    System.out.println(“第 " + num + " 个文件压缩成功!!”);
    }
    System.out.println("问题文件 " + list.size() + " 个 ");
    long endTime = System.currentTimeMillis();// 记录结束时间
    float excTime = (float) (endTime - startTime) / 1000;
    System.out.println(“执行时间:” + excTime + “s”);
    System.out.println(“完成!!”);
    }
    }

这是我的代码,找了一个小时的问题,为什么解压以后无后缀,最终是发现压缩的时候在.gz 前面加上文件后缀,比如你要压缩一个 .java文件
( //调用压缩方法的时候
compress(path + files[x], “D:\compreFile\test2\ceshi1” + num + “.java.gz”);)//把文件后缀得加上去

java代码实现压缩文件.gz格式,解压后无后缀名问题相关推荐

  1. Unity 工具类 之 WWW/UnityWebRequest 下载压缩文件(zip),解压到本地且加载使用解压数据的简单案例(内也含压缩文件例子)

    Unity 工具类 之 WWW/UnityWebRequest 网络下载压缩文件(zip),解压到本地,且加载使用解压数据的简单案例(内也含压缩文件例子) 目录 Unity 工具类 之 WWW/Uni ...

  2. Java springboot压缩文件上传,解压,删除压缩包

    1. 配置文件 在application.yml里 file-server:path: \material-main\# 自己随便命名.注意,不管windows还是linux,路径不需要带盘符,用代码 ...

  3. 压缩多张图片,解压后发现图片文件损坏的问题解决

    最近项目里需要做一个功能,就是吧多张图片压缩一个压缩文件,我使用的是java的ZipOutputStream 来实现的.最后开发完了,测试发现解压后的图片文件只有第一张能打开,后面的几张图片都打不开. ...

  4. 服务器上的压缩文件怎么解压,什么是压缩文件,如何解压?

    ?什么是文件压缩.解压缩 当我们从Internet下载文件时,许多文件通常都是所谓的压缩文件,那到底什么是压缩文件呢?最直接的讲法是,一个较大的文件经压缩后,产生了另一个较小容量的文件.而这个较小容量 ...

  5. 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,

    前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人! 这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具. ...

  6. ubuntu解压缩分卷压缩文件(同时解压多个文件)

    有些文件压缩只压缩到一个压缩包的话会有很大体积,在传输过程中会经常受到各种限制. 比如有一个8g多的文件被分三卷压缩,如果我们是在Windows系统中可以随便下载一个解压缩工具(比如7-zip),选中 ...

  7. zip4j -- Java处理zip压缩文件

    ZIP4J,作为解决了我的问题的终极解决方案,本来一开始在搜索引擎上就看到了它的踪迹,但因天朝的网络环境问题,zip4j的官网一直无法访问,最终使我多走了好多冤枉路,期间试过JDK的zip包,试过Ap ...

  8. java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  9. myeclipse下载解压后.exe文件消失

    1.解压前通过winrar发现里面有myeclipse.exe文件,但是解压后的文件夹里却没有这个文件 2.百度说是杀毒软件的问题 ,关闭所有相关杀毒进程不起作用  (可以尝试的方法一) 3. 重新修 ...

  10. jdk安装包解压后如何安装(jdk下载安装)

    1.找到"解压到"按钮,一般解压到压缩包所在的位置就行,点"确定"2.解压后,找到这个文件夹,并在里面找到"**.setup"的文件(一般文 ...

最新文章

  1. 程序员们的时间管理法则
  2. Django-缓存、信号
  3. MVC5 + EF6 + Bootstrap3
  4. 专题导读:学术大数据
  5. H3C认证云计算高级工程师
  6. 201671010139 2016-2017-2 JAVA 和C语言的语法区别
  7. pv原语模拟实现_HART协议压力变送器硬件设计及实现
  8. ODBC驱动程序丢失解决方法
  9. winpe安装Windows 10系统时efi part有红叉怎么办。
  10. C语言:判断一个数是不是素数(质数)
  11. 怎么用dos系统进入服务器,如何进入dos系统(非常实用的几个DOS使用技巧)
  12. 论文阅读:Unprocessing Images for Learned Raw Denoising
  13. 2022-2028全球粉尘检测仪行业调研及趋势分析报告
  14. python核心编程 第3版_Python核心编程(第3版)PDF高清晰完整中文版
  15. python scapy2.3 在windows上的安装
  16. 无情刀永不知错,无缘分只叹奈何
  17. 计算机网络带宽确定,一种计算机网络可用带宽测量方法
  18. word操作:如何修改字体(正确、规范、快捷)
  19. 搜狗输入法切换全角半角
  20. C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权

热门文章

  1. uni-app image组件当显示不出图片时显示默认图片
  2. 2013 前瞻 + 技术牛
  3. mysql 水晶报表_Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
  4. 重返opencv——视频编码和格式
  5. 画出典型计算机控制系统的方框图,计算机控制系统作业参考答案
  6. 清理autodesk产品注册表_如何清理卸载Inventor产品
  7. 15 个提高 Google 搜索效率的小技巧
  8. FishC《零基础学习python》笔记--第010讲、11讲、12讲:列表:一个打了激素的数组1、2、3
  9. php excel导出科学计数法,php导出excel时科学计数法的处理方法
  10. python shell怎么调字体大小_如何更改在Python Shell字体大小