/**
* 压缩文件或目录<br/>
* 将文件或者目录压缩为zip格式的压缩文件
*
* @param commpressedFile 压缩后的文件
* @param preCommpressFile 需要压缩的文件或目录路径
* @return true | false
*/
public static boolean compress(String commpressedFile, String preCommpressFile)
{
boolean isSucc = true;
File inputFile = new File(preCommpressFile);
ZipOutputStream out;
try
{
out = new ZipOutputStream(new FileOutputStream(commpressedFile));
log.debug("begin to compress file... ...");
compress(out, inputFile, inputFile.getName(), progess);
log.debug("compressed successful");
out.close();
}
catch (Exception e)
{
isSucc = false;
log.error(e.toString(), e);
}
return isSucc;
}
/**
* 递归压缩文件夹下的所有文件
*
* @param out 输出流
* @param file 需要压缩的文件
* @param base 压缩后文件的父目录
* @throws IOException
*/
private static void compress(ZipOutputStream out, File file, String base)
throws IOException
{
log.debug("compressing: " + file.getName() + "... ...");
if (file.isDirectory())
{
File[] fs = file.listFiles();
base += "/";
log.debug("add folder: " + file.getName());
out.putNextEntry(new ZipEntry(base)); // 生成相应的目录
for (int i = 0; i < fs.length; i++)
{
// 对本目录下的所有文件对象递归遍历,逐个压缩
compress(out, fs[i], base + fs[i].getName(), progess);
}
}
else
{
log.debug("add file: " + file.getName());
out.putNextEntry(new ZipEntry(base));
InputStream is = new FileInputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1)
{
out.write(buf, 0, len);
}
is.close();
}
}
/**
* 解压缩文件<br/>
* 解压缩zip格式的文件
*
* @param zipFile 需要解压缩的文件
* @param desPath 解压后保存的目录
*/
public static void decompress(String zipFile, String desPath)
{
// 建立输出流,用于将从压缩文件中读出的文件流写入到磁盘
OutputStream out = null;
// 建立输入流,用于从压缩文件中读出文件
ZipInputStream is;
File dir = new File(desPath);
dir.mkdirs();
try
{
is = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry entry = null;
while ((entry = is.getNextEntry()) != null)
{
log.debug("decompressing :" + entry.getName() + "... ...");
File f = new File(dir, entry.getName());
if (entry.isDirectory())
{
log.debug("add filder :" + f.getName());
f.mkdir();
}
else
{
log.debug("add file :" + f.getName());
// 根据压缩文件中读出的文件名称新建文件
out = new FileOutputStream(f);
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1)
{
out.write(buf, 0, len);
}
out.close();
}
}
is.close();
}
catch (Exception e)
{
log.error(e.toString(), e);
}
}
分享到:
相关推荐
一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...
vc中用来解压缩Java中gzip压缩的数据
3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。下文代码中的流操作使用了try-with- resources语法,...
JAVA文件压缩与解压缩实践报告 主函数 gzip压缩模块代码 压缩模块要完成的就是将文件读入以后进行压缩,再将压缩后的数据写入一个新的文件,其部分代码如下: public class gzip { public static void main(String...
Java文件压缩与解压缩实践是指利用Java编程语言实现对文件或文件夹进行压缩和解压缩操作。以下是该实践的描述: 技术概述: Java文件压缩与解压缩是指将一个或多个文件或文件夹打包成一个压缩文件,或者将压缩文件...
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或解压缩。 程序...
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。 ...
主要介绍了java使用gzip实现文件解压缩示例,需要的朋友可以参考下
网上相关资源多半零碎不可用,详细整理了下的文件Gzip压缩后进行AES加密,同时反向解密解压缩。java代码和需要的jar包亲测可用!!
本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...
主要介绍了Java实现的zip压缩及解压缩工具类,结合实例形式分析了java对文件的进行zip压缩及解压缩的具体操作技巧,需要的朋友可以参考下
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。 ...
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。 ...
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。 ...
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。 ...
文件压缩是在计算机应用程序和数据存储中非常常见的任务。在这个实战博客中,我们将创建一个简单的Java文件压缩工具,...支持不同的压缩格式:我们将使用Java的压缩和解压缩库来支持不同的压缩格式,如ZIP、GZIP等。