实现了文件的简单压缩、解压缩。主要测试用的里面有一些可能写的比较仓促,如有不适之处还望不吝赐教。
1.解决了中文的问题,应用的不是jdk中的包,而是应用的ant.jar
代码:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
//test.unzipFiles("D:/xmlZipFils/test.zip");
test.zipFiles();
}
/**
* 压缩文件
*/
public void zipFiles(){
File fromFiles = new File("d:\\table2xml");
if(!fromFiles.exists()){
fromFiles.mkdirs();
}
try {
//输出流
OutputStream os = new FileOutputStream("D:\\xmlZipFils\\test.zip");
ZipOutputStream zipos = new ZipOutputStream(os);
File file = null;
ZipEntry zipEntry = null;
InputStream inputStream = null;
File[] files = fromFiles.listFiles(new FileFilter(){
public boolean accept(File pathname) {
// TODO Auto-generated method stub
boolean flag = false;
if(pathname.getName().indexOf("桥接测试@weibainju_1181")!=-1){
flag = true;
}
return flag;
}
});
doFiles(files,zipos,true);
zipos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 压缩时对文件和目录进行处理
* @param 某目录下面的所有文件和目录
* @param zip数出流
* @param 是否是要压缩的顶级目录
*/
public static void doFiles(File[] files,ZipOutputStream zipos,boolean isFrist){
InputStream inputStream =null;
ZipEntry zipEntry = null;
try {
for(int i =0;i<files.length;i++){
if(!files[i].isDirectory()){
inputStream = new FileInputStream(files[i]);
if(isFrist==false){
zipEntry = new ZipEntry(files[i].getParentFile().getName()+File.separatorChar+files[i].getName());
}else{
zipEntry = new ZipEntry(files[i].getName());
}
zipos.putNextEntry(zipEntry);
int count =0;
while((count=inputStream.read())!=-1){
zipos.write(count);
}
inputStream.close();
}else{
File[] files1 = files[i].listFiles();
doFiles(files1,zipos,false);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 解压缩文件
*/
public void unzipFiles(String zipFilePath){
String outDir = "d:/unzipXml";
try {
File unzipDir = new File(outDir);
ZipFile unzipFile = new ZipFile(zipFilePath);
Enumeration e = unzipFile.getEntries();
InputStream zipis = null;
ZipEntry zipEntry;
while(e.hasMoreElements()){
zipEntry = (ZipEntry) e.nextElement();
zipis = unzipFile.getInputStream(zipEntry);
if(zipEntry.isDirectory()){
File file = new File(outDir,zipEntry.getName());
if(!file.exists()){
file.mkdirs();
}
}else{
if(zipEntry.getName().indexOf("/")>0){
File file = new File(outDir+File.separatorChar+zipEntry.getName().substring(0,zipEntry.getName().indexOf("/")));
if(!file.exists()){
file.mkdirs();
}
}
File file = new File(outDir,zipEntry.getName());
OutputStream os = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(os);
int count = 0;
while((count = zipis.read())!=-1){
dos.write(count);
}
zipis.close();
os.close();
dos.close();
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
本人原创。欢迎转载!
分享到:
相关推荐
用java实现huffman编码,Encode.java实现文件的压缩,Decode.java 实现文件的解压缩
使用Java实现文件的压缩和解压缩
java实现霍夫曼(huffman)树的压缩和解压缩,支持对文档的压缩和解压缩
使用apache的第三方包,实现对文件的压缩和解压缩,解决jdk自带的实现中,中文文件名乱码问题,压缩和解压缩时,可以设置文件名的编码方式
本代码实例演示如何用java语言实现apk文件的压缩和解压缩。
java中如何实现压缩和解压缩,zip,unzip,java中如何实现压缩和解压缩,zip,unzip
java压缩和解压缩
使用java语言实现Huffman对任意文件做到压缩和解压缩,压缩后的文件只能通过解压缩来解压后才能读取
压缩API:Java提供了java.util.zip和java.util.jar包来实现文件的压缩和解压缩操作。 压缩算法:通过选择不同的压缩算法,如DEFLATE算法用于ZIP格式,实现对文件的压缩。 流操作:使用Java的输入输出流(InputStream...
我们将深入了解Java编程语言以及Java的压缩和解压缩库,以帮助您构建自己的文件压缩工具。 以下是本实战博客的主要内容: 项目概述 准备工作 创建Java项目 设计用户界面 实现文件压缩功能 实现文件解压缩功能 总结...
本程序实现了利用 Huffman 编码对图像进行无损压缩和解压缩。Huffman 编码是一种基于字符出现频率构建相应前缀码的无损数据压缩算法。 使用方法: 1. 需要安装 OpenCV 和 Numpy 库: pip install opencv-python ...
java 压缩和解压缩为zip文件 有测试类,可以直接测试。效果还不错,现网已经运行好长时间了
源代码部分包含了完整的Java实现代码,包括压缩和解压缩两个主要功能。在压缩方面,代码使用了Java内置的java.util.zip包中的ZipOutputStream类,实现了对文件的压缩操作,支持将多个文件压缩成一个单独的ZIP文件。...
java端文件和文件夹的压缩和解压缩。经过测试,通过
使用Java 语言实现了Huffman编码的压缩和解压缩,能够实现对Ascii 文档的压缩和解压缩,目前尚不支持对二进制文档进行压缩
使用哈夫曼编码实现对文本文件的压缩和解压缩
为了方便文件的传输和存储,文件压缩和解压缩成为必不可少的工具。因此,本毕设旨在设计一个基于JAVA的文件压缩与解压缩系统。 ## 系统需求 该系统需要实现以下功能: 1. 压缩文件:能够将文件夹中的所有文件压缩...
这几天做一个操作docx的文档的功能,Apache的POI功能有限,就参考了相关资料写的一个Java压缩和解压zip文件的工具类。全部使用的是Java自带的类库,中文的文件名会有乱码的问题。
开发者可以使用Java API来调用LZ4压缩算法,实现高效的数据压缩和解压缩。 LZ4压缩算法是一种高效的lossless压缩算法,提供了极快的压缩速度和解压速度,能够广泛应用于各个领域,包括数据存储、数据传输和数据压缩...
Java标准库的java.util.zip包通常适用于简单的ZIP格式压缩与解压缩,Apache Commons Compress和Java Zip4j提供了更多的压缩格式和功能选项。对于大型数据集和高性能要求的场景,还可以考虑使用专门的压缩工具或算法...