首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 兑现文件压缩和解压缩

2012-10-31 
java 实现文件压缩和解压缩实现了文件的简单压缩、解压缩。主要测试用的里面有一些可能写的比较仓促,如有不

java 实现文件压缩和解压缩

实现了文件的简单压缩、解压缩。主要测试用的里面有一些可能写的比较仓促,如有不适之处还望不吝赐教。

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 stubboolean 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}  }}

?

?

本人原创。欢迎转载!

热点排行