压缩zip文件和解压zip格式的文件
2016-06-13 09:27
495 查看
<span style="white-space:pre"> </span>/**
*
*单文件压缩
*
*/
@Test
public void zip() throws IOException{
String path="D://compressssss//b.zip";
File file=new File(path.substring(0, path.lastIndexOf("//")));
//如果不存在这个文件夹就创建这个文件夹
if(!file.exists()){
file.mkdirs();
}
ZipArchiveOutputStream zipOut=new ZipArchiveOutputStream(new FileOutputStream(path));
InputStream in=new FileInputStream("E://test.txt");
ZipArchiveEntry entry=new ZipArchiveEntry("test.txt");
zipOut.putArchiveEntry(entry);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
zipOut.write(b,0,len);
}
zipOut.closeArchiveEntry();
zipOut.close();
}
/**
* 多文件压缩成zip包
* @throws IOException
*/
@Test
public void MulFileCompress() throws IOException{
//压缩包的指定路径
String path="D://zip//code.zip";
File file2=new File(path.substring(0, path.lastIndexOf("//")));
//如果不存在这个文件夹就创建这个文件夹
if(!file2.exists()){
file2.mkdirs();
}
ZipArchiveOutputStream zipOut=new ZipArchiveOutputStream(new FileOutputStream(path));
//将要进行压缩的文档"E:\\工作文档"
File file=new File("E:\\工作文档");
System.out.println(file.getAbsolutePath());
String filepath=file.getAbsolutePath().substring(0,file.getAbsolutePath().lastIndexOf("\\")+1);
System.out.println(filepath);
getFile(file,zipOut,filepath);
zipOut.close();
}
private void getFile(File file,ZipArchiveOutputStream zipOut,String filepath) throws IOException{
boolean isDirectory=file.isDirectory();
//判断子文件是否是目录是的话进行递归,不是目录而是文件的话,就直接进行压缩
if(isDirectory){
File[] files=file.listFiles();
for (File f : files) {
getFile(f,zipOut,filepath);
}
}else{
InputStream in=new FileInputStream(file.getAbsolutePath());
if(file.getAbsolutePath()!="D://"){
String path=file.getAbsolutePath().substring(file.getAbsolutePath().indexOf(filepath)+filepath.length());
System.out.println(path);
ZipArchiveEntry entry=new ZipArchiveEntry(path);
zipOut.putArchiveEntry(entry);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
zipOut.write(b,0,len);
}
zipOut.closeArchiveEntry();
}
}
}
/**
* 解压zip文件
* @throws IOException
*/
@Test
public void Test() throws IOException{
File file=new File("D://zip//code.zip");
unCompress(file,"D://unzip//");
}
public void unCompress(File zipFile,String descDir)throws IOException{
File pathFile = new File(descDir);
if(!pathFile.exists()){
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile);
for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
ZipArchiveEntry entry = (ZipArchiveEntry)entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");
//判断路径是否存在
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if(!file.exists()){
file.mkdirs();
}
//判断文件全路径是否为文件夹
if(new File(outPath).isDirectory()){
continue;
}
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
}
*
*单文件压缩
*
*/
@Test
public void zip() throws IOException{
String path="D://compressssss//b.zip";
File file=new File(path.substring(0, path.lastIndexOf("//")));
//如果不存在这个文件夹就创建这个文件夹
if(!file.exists()){
file.mkdirs();
}
ZipArchiveOutputStream zipOut=new ZipArchiveOutputStream(new FileOutputStream(path));
InputStream in=new FileInputStream("E://test.txt");
ZipArchiveEntry entry=new ZipArchiveEntry("test.txt");
zipOut.putArchiveEntry(entry);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
zipOut.write(b,0,len);
}
zipOut.closeArchiveEntry();
zipOut.close();
}
/**
* 多文件压缩成zip包
* @throws IOException
*/
@Test
public void MulFileCompress() throws IOException{
//压缩包的指定路径
String path="D://zip//code.zip";
File file2=new File(path.substring(0, path.lastIndexOf("//")));
//如果不存在这个文件夹就创建这个文件夹
if(!file2.exists()){
file2.mkdirs();
}
ZipArchiveOutputStream zipOut=new ZipArchiveOutputStream(new FileOutputStream(path));
//将要进行压缩的文档"E:\\工作文档"
File file=new File("E:\\工作文档");
System.out.println(file.getAbsolutePath());
String filepath=file.getAbsolutePath().substring(0,file.getAbsolutePath().lastIndexOf("\\")+1);
System.out.println(filepath);
getFile(file,zipOut,filepath);
zipOut.close();
}
private void getFile(File file,ZipArchiveOutputStream zipOut,String filepath) throws IOException{
boolean isDirectory=file.isDirectory();
//判断子文件是否是目录是的话进行递归,不是目录而是文件的话,就直接进行压缩
if(isDirectory){
File[] files=file.listFiles();
for (File f : files) {
getFile(f,zipOut,filepath);
}
}else{
InputStream in=new FileInputStream(file.getAbsolutePath());
if(file.getAbsolutePath()!="D://"){
String path=file.getAbsolutePath().substring(file.getAbsolutePath().indexOf(filepath)+filepath.length());
System.out.println(path);
ZipArchiveEntry entry=new ZipArchiveEntry(path);
zipOut.putArchiveEntry(entry);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
zipOut.write(b,0,len);
}
zipOut.closeArchiveEntry();
}
}
}
/**
* 解压zip文件
* @throws IOException
*/
@Test
public void Test() throws IOException{
File file=new File("D://zip//code.zip");
unCompress(file,"D://unzip//");
}
public void unCompress(File zipFile,String descDir)throws IOException{
File pathFile = new File(descDir);
if(!pathFile.exists()){
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile);
for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
ZipArchiveEntry entry = (ZipArchiveEntry)entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");
//判断路径是否存在
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if(!file.exists()){
file.mkdirs();
}
//判断文件全路径是否为文件夹
if(new File(outPath).isDirectory()){
continue;
}
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
}
相关文章推荐
- uploadify多文件上传参数设置技巧
- PHP多文件上传实例
- php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
- php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
- linux 文件压缩命令
- linux 操作打包命令
- ajaxFileupload多文件上传
- Java ZIP压缩文件读写
- java解压zip rar文件实例
- java文件压缩
- 解压.zip格式的文件
- 多文件压缩下载 及 解决中文乱码问题
- 多文件上传和下载
- 无刷新多文件上传(iframe)
- Ubuntu 解压命令详解
- OC中如何进行多文件开发?
- 使用PHP的ZipArchive类实现多个文件的zip压缩包打包下载
- Objective-C基础笔记二
- java I/O(一)——基本操作&&java.util.zip压缩
- C++游戏系列3:用多文件组织角色类