java代码实现压缩文件.gz格式,解压后无后缀名问题
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格式,解压后无后缀名问题相关推荐
- Unity 工具类 之 WWW/UnityWebRequest 下载压缩文件(zip),解压到本地且加载使用解压数据的简单案例(内也含压缩文件例子)
Unity 工具类 之 WWW/UnityWebRequest 网络下载压缩文件(zip),解压到本地,且加载使用解压数据的简单案例(内也含压缩文件例子) 目录 Unity 工具类 之 WWW/Uni ...
- Java springboot压缩文件上传,解压,删除压缩包
1. 配置文件 在application.yml里 file-server:path: \material-main\# 自己随便命名.注意,不管windows还是linux,路径不需要带盘符,用代码 ...
- 压缩多张图片,解压后发现图片文件损坏的问题解决
最近项目里需要做一个功能,就是吧多张图片压缩一个压缩文件,我使用的是java的ZipOutputStream 来实现的.最后开发完了,测试发现解压后的图片文件只有第一张能打开,后面的几张图片都打不开. ...
- 服务器上的压缩文件怎么解压,什么是压缩文件,如何解压?
?什么是文件压缩.解压缩 当我们从Internet下载文件时,许多文件通常都是所谓的压缩文件,那到底什么是压缩文件呢?最直接的讲法是,一个较大的文件经压缩后,产生了另一个较小容量的文件.而这个较小容量 ...
- 递归遍历文件夹,递归解压,压缩文件,写解压和压缩过程的日志,
前言:好久好久没另写一篇博客了,都是在更新QT常用函数里面内容,这瘟疫影响了我躁动奋进的心,又是大半年没努力了,气人! 这次做的是个多个压缩包 将压缩包里面的内容合并起来 打包成对应的压缩包的工具. ...
- ubuntu解压缩分卷压缩文件(同时解压多个文件)
有些文件压缩只压缩到一个压缩包的话会有很大体积,在传输过程中会经常受到各种限制. 比如有一个8g多的文件被分三卷压缩,如果我们是在Windows系统中可以随便下载一个解压缩工具(比如7-zip),选中 ...
- zip4j -- Java处理zip压缩文件
ZIP4J,作为解决了我的问题的终极解决方案,本来一开始在搜索引擎上就看到了它的踪迹,但因天朝的网络环境问题,zip4j的官网一直无法访问,最终使我多走了好多冤枉路,期间试过JDK的zip包,试过Ap ...
- java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!
项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...
- myeclipse下载解压后.exe文件消失
1.解压前通过winrar发现里面有myeclipse.exe文件,但是解压后的文件夹里却没有这个文件 2.百度说是杀毒软件的问题 ,关闭所有相关杀毒进程不起作用 (可以尝试的方法一) 3. 重新修 ...
- jdk安装包解压后如何安装(jdk下载安装)
1.找到"解压到"按钮,一般解压到压缩包所在的位置就行,点"确定"2.解压后,找到这个文件夹,并在里面找到"**.setup"的文件(一般文 ...
最新文章
- 程序员们的时间管理法则
- Django-缓存、信号
- MVC5 + EF6 + Bootstrap3
- 专题导读:学术大数据
- H3C认证云计算高级工程师
- 201671010139 2016-2017-2 JAVA 和C语言的语法区别
- pv原语模拟实现_HART协议压力变送器硬件设计及实现
- ODBC驱动程序丢失解决方法
- winpe安装Windows 10系统时efi part有红叉怎么办。
- C语言:判断一个数是不是素数(质数)
- 怎么用dos系统进入服务器,如何进入dos系统(非常实用的几个DOS使用技巧)
- 论文阅读:Unprocessing Images for Learned Raw Denoising
- 2022-2028全球粉尘检测仪行业调研及趋势分析报告
- python核心编程 第3版_Python核心编程(第3版)PDF高清晰完整中文版
- python scapy2.3 在windows上的安装
- 无情刀永不知错,无缘分只叹奈何
- 计算机网络带宽确定,一种计算机网络可用带宽测量方法
- word操作:如何修改字体(正确、规范、快捷)
- 搜狗输入法切换全角半角
- C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权
热门文章
- uni-app image组件当显示不出图片时显示默认图片
- 2013 前瞻 + 技术牛
- mysql 水晶报表_Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
- 重返opencv——视频编码和格式
- 画出典型计算机控制系统的方框图,计算机控制系统作业参考答案
- 清理autodesk产品注册表_如何清理卸载Inventor产品
- 15 个提高 Google 搜索效率的小技巧
- FishC《零基础学习python》笔记--第010讲、11讲、12讲:列表:一个打了激素的数组1、2、3
- php excel导出科学计数法,php导出excel时科学计数法的处理方法
- python shell怎么调字体大小_如何更改在Python Shell字体大小