java编程笔记18 文件压缩与解压缩
2011-03-19 14:30
417 查看
在java中,主要是利用ZipEntry,ZipInputStream和ZipOutputStream来实现zip数据压缩方式的编程方法,
ZipInputStream的主要方法
压缩测试程序:
运行结果:
文件压缩开始:D:\常用软件
正在添加文件:D:\常用软件\apache_2.2.4-win32-x86-no_ssl.zip
正在添加文件:D:\常用软件\CAJViewer7.0.zip
正在添加文件:D:\常用软件\CCleaner.rar
正在添加文件:D:\常用软件\CTeX_2.8.0.125.exe
正在添加文件:D:\常用软件\download
正在添加文件:D:\常用软件\DUBA2008_down_31_4306.exe
正在添加文件:D:\常用软件\DZH_INTERNET_V560w.exe
正在添加文件:D:\常用软件\EasyRecoveryPro-v6.20.rar
正在添加文件:D:\常用软件\FinalData-v2.01.rar
正在添加文件:D:\常用软件\FirefoxChinaEdition 2010.12.exe
正在添加文件:D:\常用软件\FirefoxChinaEdition-latest.exe
正在添加文件:D:\常用软件\fxalendar.exe
............
............
文件压缩完成:D:\zip_test.zip
解压缩:
构造方法摘要 |
---|
ZipEntry(String name) 使用指定名称创建新的 ZIP 条目。 |
构造方法摘要 |
---|
ZipInputStream(InputStream in) 创建新的 ZIP 输入流。 |
构造方法摘要 |
---|
ZipOutputStream(OutputStream out) 创建新的 ZIP 输出流。 |
ZipEntry | getNextEntry() 读取下一个 ZIP 文件条目并将流定位到该条目数据的开始处。 |
void | closeEntry() 关闭当前 ZIP 条目并定位流以读取下一个条目。 |
package com.book.ch09.file;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class CompressFile {
public staticvoid addFile(ZipOutputStream zipOutput, File file) throws IOException{
System.out.println("正在添加文件:" + file.getAbsolutePath());
// 每个压缩对象都为一个 ZipEntry 实例。
ZipEntry zipEntry = new ZipEntry(file.getName());
// 将这个实例放入压缩文件中
zipOutput.putNextEntry(zipEntry);
// 读取文件内容
FileInputStream ins = new FileInputStream(file);
byte[] tmp = new byte[1024];
int len = 0;
while((len = ins.read(tmp)) != -1){
zipOutput.write(tmp, 0, len);
}
ins.close();
// 关闭当前的 ZipEntry 实例
zipOutput.closeEntry();
}
public staticvoid main(String[] args) throws IOException{
File sourceFolder = new File("D:\\常用软件");
File targetFile = new File("D:\\zip_test.zip");
// 使用 ZipOutputStream 创建压缩文件
ZipOutputStream zipOutput = new ZipOutputStream(new FileOutputStream(targetFile));
// 列出该文件夹下所有的文件
File[] subFiles = sourceFolder.listFiles(new FileFilter(){
public boolean accept(File pathname) {
if(pathname.isFile()) return true;
return false;
}
});
System.out.println("\r\n文件压缩开始:" +sourceFolder.getAbsolutePath()+"\n\n");
for(int i=0; i<subFiles.length; i++){
addFile(zipOutput, subFiles[i]);
}
zipOutput.close();
System.out.println("\r\n文件压缩完成:" + targetFile.getAbsolutePath());
}
}
运行结果:
文件压缩开始:D:\常用软件
正在添加文件:D:\常用软件\apache_2.2.4-win32-x86-no_ssl.zip
正在添加文件:D:\常用软件\CAJViewer7.0.zip
正在添加文件:D:\常用软件\CCleaner.rar
正在添加文件:D:\常用软件\CTeX_2.8.0.125.exe
正在添加文件:D:\常用软件\download
正在添加文件:D:\常用软件\DUBA2008_down_31_4306.exe
正在添加文件:D:\常用软件\DZH_INTERNET_V560w.exe
正在添加文件:D:\常用软件\EasyRecoveryPro-v6.20.rar
正在添加文件:D:\常用软件\FinalData-v2.01.rar
正在添加文件:D:\常用软件\FirefoxChinaEdition 2010.12.exe
正在添加文件:D:\常用软件\FirefoxChinaEdition-latest.exe
正在添加文件:D:\常用软件\fxalendar.exe
............
............
文件压缩完成:D:\zip_test.zip
解压缩:
package com.book.ch09.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UncompressFile {
static int count = 0;
public staticvoid extractFile(File path, ZipInputStream zipIns, ZipEntry zipEntry) throws IOException{
File file = new File(path, zipEntry.getName());
System.out.println("正在释放文件:" + file.getAbsolutePath());
FileOutputStream ous = new FileOutputStream(file);
byte[] tmp = new byte[1024];
int len = 0;
while((len = zipIns.read(tmp)) != -1){
ous.write(tmp, 0, len);
}
ous.close();
zipIns.closeEntry();
count++;
}
public staticvoid main(String[] args) throws IOException{
File sourceZipFile = new File("c:\\zip_test.zip");
File targetFolder = new File("C:\\zip_test");
targetFolder.mkdir();
ZipInputStream zipIns = new ZipInputStream(new FileInputStream(sourceZipFile));
ZipEntry zipEntry = zipIns.getNextEntry();
while(zipEntry != null){
extractFile(targetFolder, zipIns, zipEntry);
zipEntry = zipIns.getNextEntry();
}
zipIns.close();
System.out.println("\r\n文件释放完成。" + count + " 个文件被释放。");
}
}
相关文章推荐
- Linux+javaEE学习之文件的压缩+解压缩+java网络编程
- Java 压缩/解压缩 文件
- Java ZIP文件压缩与解压缩
- java鬼混笔记:压缩文件生成zip
- java解压缩文件和不解压读取压缩文件中的文本文件内容
- java ZipOutputStream压缩文件,ZipInputStream解压缩
- java 文件压缩及解压缩
- java 压缩文件 解压缩文件
- Java文件压缩与解压缩(四)
- java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
- Java文件压缩与解压缩(四)
- Java操作zip压缩和解压缩文件工具类
- java使用tar算法压缩解压缩文件、数据流、byte[]字节数组
- 多文件压缩与解压缩(JAVA)
- Java小程序之哈夫曼树与文件压缩和解压缩(二)文件压缩篇
- java压缩/解压缩zip格式文件
- Java小程序之哈夫曼树与文件压缩和解压缩(一)哈夫曼树构造篇
- java解压缩一个压缩文件中包含多个文件的情况
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件
- Java实现Zip压缩/解压缩目录中的所有文件