实现了文件的简单压缩、解压缩。主要测试用的里面有一些可能写的比较仓促,如有不适之处还望不吝赐教。
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环境中实现哈夫曼编码的压缩和解压缩功能。如果你想要深入学习或实践,可以下载这个压缩包,阅读代码,并尝试运行它们来观察压缩和解压缩的效果。
java实现霍夫曼(huffman)树的压缩和解压缩,支持对文档的压缩和解压缩
在标题中提到的"java实现对文件或文件夹的压缩和解压缩",我们可以使用这个库来实现。具体来说,我们可以创建一个`ZipUtil`类,里面包含压缩和解压缩的静态方法。 首先,为了压缩文件或文件夹,我们需要使用`org....
"JAVA文件压缩与解压缩实践(源代码+LW)"包含了使用Java实现文件压缩和解压缩的完整流程,同时附带了相关说明文档。 1. **Java压缩库**:Java标准库提供了一个名为`java.util.zip`的包,包含了一系列类用于文件和...
在Java编程中,实现文件的压缩和解压缩是一项常见的任务,这通常涉及到对`java.util.zip`包的使用。`ZipOutputStream`和`ZipInputStream`是Java标准库提供的两个关键类,它们分别用于文件的压缩和解压缩。然而,需要...
Java作为一种广泛应用的编程语言,提供了多种实现文件压缩和解压缩的API。本篇将详细介绍如何在Java中实现文件的非加密压缩、加密压缩以及相关的工具方法。 一、非加密压缩 Java中的`java.util.zip`包提供了对ZIP和...
在Java编程语言中,我们可以利用内置的`java.util.zip`包来实现文件的压缩和解压缩功能。这个包提供了一系列的类,如`ZipOutputStream`用于创建ZIP压缩文件,`ZipInputStream`则用于读取和解压缩ZIP文件。在本教程中...
1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种压缩和解压缩的类,如`ZipOutputStream`、`ZipInputStream`、`GZIPOutputStream`和`GZIPInputStream`,用于处理ZIP和GZIP格式的文件。...
6. **类的设计**:`Work5`, `Work5_new`, `OneTest`, `JieMu`等可能是实现文件分割和压缩功能的具体类。它们可能包含了主函数、方法以及一些辅助类来完成文件处理任务。 7. **测试**:`OneTest`类很可能包含了单元...
在Java编程环境中,APK文件是Android应用的安装包,通常是`.apk`格式,它包含了应用的所有资源、代码和配置信息。本实例将探讨如何利用...总之,Java提供的`java.util.zip`库为处理压缩和解压缩任务提供了强大的支持。
在实际项目中,根据具体需求,可以选择合适的方法或库来实现文件的压缩和解压缩。务必注意处理异常,确保资源的正确关闭,以避免数据丢失或内存泄漏等问题。同时,为了提高性能,可以考虑使用缓冲流和多线程来优化...
Java编程语言提供了强大的文件压缩和解压缩功能,主要通过java.util.zip包中的类来实现,如ZipOutputStream用于压缩,ZipInputStream用于解压缩。本篇将深入探讨这些关键类的使用方法,以及在Java中处理ZIP文件的...
该Java源代码实现了LZMA算法的压缩和解压缩过程,提供了一个完整的LZMA算法实现。 结论 该Java源代码实现了LZMA算法的核心逻辑,包括压缩和解压缩的实现。源代码中定义了多个常量和函数,用于控制压缩和解压缩的...
7. **HuffmanTest**:这个文件名可能是一个测试类,用于实现上述的压缩和解压缩过程。在Java中,可以使用`java.io`和`java.nio`包下的类进行文件操作,使用`java.util`包下的数据结构辅助实现Huffman算法。 实现...
以上就是`FileUtil.java`文件中可能实现RAR压缩和解压缩的核心代码片段。通过结合Apache Commons Compress库,开发者可以轻松地在Java应用程序中处理RAR格式的压缩和解压缩任务。这个库不仅支持RAR,还支持其他多种...
Java编程语言提供了丰富的库来处理文件的压缩和解压缩任务,这主要归功于Java标准库中的`java.util.zip`包。在这个包中,我们有`ZipOutputStream`和`ZipInputStream`类用于创建和读取ZIP文件,以及`GZIPOutputStream...
在Java中,我们可以利用内置的`java.util.zip`包来实现文件的压缩和解压缩功能。 1. **压缩API**:在Java中,`java.util.zip`包提供了多个类用于处理压缩文件,如`ZipOutputStream`用于创建ZIP文件,`...
本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....
在Java编程环境中,处理文件压缩和解压缩是常见的任务,特别是在构建可执行的JAR包或者处理数据传输时。本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们...
压缩API:Java提供了java.util.zip和java.util.jar包来实现文件的压缩和解压缩操作。 压缩算法:通过选择不同的压缩算法,如DEFLATE算法用于ZIP格式,实现对文件的压缩。 流操作:使用Java的输入输出流(InputStream...