⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testzip.java

📁 java实现zip文件压缩解压
💻 JAVA
字号:
 import java.io.*;

	

 public class TestZip {
    
          private  byte[] buff=new byte[1024*6];
	 /*------------------------------------------------------------------------------*/
	 
	 
          public void fileToZip(String zipFileName, String inputFile) {
        
                   fileToZip(zipFileName, new File(inputFile));
     
     }
     /*--------------------------------------------------------------------------------*/
     
     
     
     private void fileToZip(String zipFileName, File inputFile) {
         try {
        	 org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName)));
             fileToZip(out, inputFile, inputFile.getName());
             out.setComment("  ");
 
             System.out.println("zip over");
             out.close();
        }
         catch (FileNotFoundException e) {
           
        	 System.out.println("zip unsuccessful "+e.getMessage());
       }
      catch (IOException e) {
           
           System.out.println("zip unsuccessful "+e.getMessage());
        }
    }
    /*-------------------------------------------------------------------------------------------*/
    
    
    
    private void fileToZip(org.apache.tools.zip.ZipOutputStream out, File f, String base) {
        try {
             System.out.print("Read:" + f.getName());
            
            if (f.isDirectory()) {
                System.out.println("  is Directory!");
                
                File[] fl = f.listFiles();
             
                out.putNextEntry(new org.apache.tools.zip.ZipEntry(base +"/"));
                base = base.length() == 0 ? "" : base +"/";
                for (int i = 0; i < fl.length; i++) {
                    fileToZip(out, fl[i], base + fl[i].getName());
                }
            }
            else {
                System.out.println("  isn't Directory!");
                org.apache.tools.zip.ZipEntry z=new org.apache.tools.zip.ZipEntry(base);
                out.putNextEntry(z);
                BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));
                int b;
               
                while ((b = in.read(buff,0,1024*6)) != -1) {
                   out.write(buff,0,b);
                } 
                out.closeEntry();
                print(z);
                
                in.close();
           }
        }
        catch (FileNotFoundException e) {
           
          
            System.out.println("zip unsuccessful "+e.getMessage());
        }
         catch (IOException e) {
           
        	System.out.println("zip unsuccessful "+e.getMessage());
       }
    }
    /*-----------------------------------------------------------------------------------------*/
    
    
     private static void print(org.apache.tools.zip.ZipEntry e){
         PrintStream err = System.err;
         err.print(e.getName());
         if (e.getMethod() == org.apache.tools.zip.ZipEntry.DEFLATED) {
           long size = e.getSize();
           if (size > 0) {
             long csize = e.getCompressedSize();
             long ratio = ((size-csize)*100) / size;
             err.println("  deflated  " + ratio + "%");
             }
           else {
             err.println("  deflated  0%");
             }
           }
         else {
           err.println("   stored  0%");
           }
        }
         
         
/*-----------------------------------------------------------------------------------------------------*/

    public void zipToFile(String zipFileName, String outputDirectory) {
    try {
         org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName);
         java.util.Enumeration e = zipFile.getEntries();
         org.apache.tools.zip.ZipEntry zipEntry = null;
         createDirectory(outputDirectory, "");
         
         while (e.hasMoreElements()) {
         	
            zipEntry = (org.apache.tools.zip.ZipEntry)  e.nextElement();
            System.out.println("unziping " + zipEntry.getName());
            if (zipEntry.isDirectory()) {
                String name = zipEntry.getName();
                name = name.substring(0, name.length() - 1);
                File f = new File(outputDirectory + File.separator + name);
                f.mkdir();
                System.out.println("create Directory " + outputDirectory + File.separator + name);
             }
             else {
                String fileName = zipEntry.getName();
                fileName = fileName.replace('\\', '/');
                if (fileName.indexOf("/") != -1){
                    createDirectory(outputDirectory,
                    fileName.substring(0, fileName.lastIndexOf("/")));
                    fileName=fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
                 }

                 File f = new File(outputDirectory + File.separator + zipEntry.getName());

                 f.createNewFile();
                 InputStream in = zipFile.getInputStream(zipEntry);                 FileOutputStream out=new FileOutputStream(f);
                // System.out.println("get "+f.getName());
                 int c;
                 while ( (c = in.read(buff,0,1024*6)) != -1) {
                      out.write(buff, 0, c);
                 }
                 out.close();
                 in.close();
              }
          }
       }
       catch (Exception ex) {
       System.out.println(ex.getMessage());
       }
        
 }
 /*------------------------------------------------------------------------------------------*/
 
 
  private void createDirectory(String directory, String subDirectory) {
    String dir[];
    File fl = new File(directory);
    try {
      if (subDirectory == "" && fl.exists() != true)
        fl.mkdir();
      else if (subDirectory != "") {
        dir = subDirectory.replace('\\', '/').split("/");
        for (int i = 0; i < dir.length; i++) {
          File subFile = new File(directory + File.separator + dir[i]);
          if (subFile.exists() == false)
            subFile.mkdir();
          directory += File.separator + dir[i];
        }
      }
    }
    catch (Exception ex) {
      System.out.println(ex.getMessage());
    }
  
  }
 
 
 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -