0
点赞
收藏
分享

微信扫一扫

java Gzip 压缩与解压缩

import java.io.FileInputStream; 
 import java.io.FileNotFoundException; 
 import java.io.FileOutputStream; 
 import java.io.IOException; 
 import java.util.zip.GZIPOutputStream; 


 public class CompressFileGZIP { 
 private static void doCompressFile(String inFileName) { 
   
         try { 
         
             System.out.println("Creating the GZIP output stream."); 
             String outFileName = inFileName + ".gz"; 
             GZIPOutputStream out = null; 
             try { 
                 out = new GZIPOutputStream(new FileOutputStream(outFileName)); 
             } catch(FileNotFoundException e) { 
                 System.err.println("Could not create file: " + outFileName); 
                 System.exit(1); 
             } 
                     
   
             System.out.println("Opening the input file."); 
             FileInputStream in = null; 
             try { 
                 in = new FileInputStream(inFileName); 
             } catch (FileNotFoundException e) { 
             System.err.println("File not found. " + inFileName); 
                 System.exit(1); 
             } 

             System.out.println("Transfering bytes from input file to GZIP Format."); 
             byte[] buf = new byte[1024]; 
             int len; 
             while((len = in.read(buf)) > 0) { 
                 out.write(buf, 0, len); 
             } 
             in.close(); 

             System.out.println("Completing the GZIP file"); 
             out.finish(); 
             out.close(); 
         
         } catch (IOException e) { 
             e.printStackTrace(); 
             System.exit(1); 
         } 

     } 

     /** 
      * Sole entry point to the class and application. 
      * @param args Array of String arguments. 
      */ 
     public static void main(String[] args) { 
     String str="E:\\AUTORUN.INF"; 
         
             doCompressFile(str); 
         
   
              
     } 
 } 

 --------------------------------------------------------------------------------------------------------------------------- 




 import java.util.zip.GZIPInputStream; 
 import java.io.FileOutputStream; 
 import java.io.FileInputStream; 
 import java.io.FileNotFoundException; 
 import java.io.IOException; 

 public class UncompressFileGZIP { 

     /** 
      * Uncompress the incoming file. 
      * @param inFileName Name of the file to be uncompressed 
      */ 
     private static void doUncompressFile(String inFileName) { 

         try { 

             if (!getExtension(inFileName).equalsIgnoreCase("gz")) { 
                 System.err.println("File name must have extension of \".gz\""); 
                 System.exit(1); 
             } 

             System.out.println("Opening the compressed file."); 
             GZIPInputStream in = null; 
             try { 
                 in = new GZIPInputStream(new FileInputStream(inFileName)); 
             } catch(FileNotFoundException e) { 
                 System.err.println("File not found. " + inFileName); 
                 System.exit(1); 
             } 

             System.out.println("Open the output file."); 
             String outFileName = getFileName(inFileName); 
             FileOutputStream out = null; 
            try { 
                 out = new FileOutputStream(outFileName); 
             } catch (FileNotFoundException e) { 
                 System.err.println("Could not write to file. " + outFileName); 
                 System.exit(1); 
             } 

             System.out.println("Transfering bytes from compressed file to the output file."); 
             byte[] buf = new byte[1024]; 
             int len; 
             while((len = in.read(buf)) > 0) { 
                 out.write(buf, 0, len); 
             } 

             System.out.println("Closing the file and stream"); 
             in.close(); 
             out.close(); 
         
         } catch (IOException e) { 
             e.printStackTrace(); 
             System.exit(1); 
         } 

     } 

     /** 
      * Used to extract and return the extension of a given file. 
      * @param f Incoming file to get the extension of 
      * @return <code>String</code> representing the extension of the incoming 
      *         file. 
      */ 
     public static String getExtension(String f) { 
         String ext = ""; 
         int i = f.lastIndexOf('.'); 

         if (i > 0 &&  i < f.length() - 1) { 
             ext = f.substring(i+1); 
         }      
         return ext; 
     } 

     /** 
      * Used to extract the filename without its extension. 
      * @param f Incoming file to get the filename 
      * @return <code>String</code> representing the filename without its 
      *         extension. 
      */ 
     public static String getFileName(String f) { 
         String fname = ""; 
         int i = f.lastIndexOf('.'); 

         if (i > 0 &&  i < f.length() - 1) { 
             fname = f.substring(0,i); 
         }      
         return fname; 
     } 

     /** 
      * Sole entry point to the class and application. 
      * @param args Array of String arguments. 
      */ 
     public static void main(String[] args) { 
     
        
             doUncompressFile("E:\\AUTORUN.INF.gz"); 
        

     } 

 } 
==================
public class CompressHelper {
  
  private static final Log log = LogFactory.getLog(DateUtil.class);
  
  public static final String EncodingType = "UTF-8";
  
  public static final byte[] compress(String str){
   return compress(str, EncodingType);
  }
  
  public static final byte[] compress(String str, String encodingType){
   if (str == null)
    return null;
   
   byte[] compressed;
   ByteArrayOutputStream out = null;
   //ZipOutputStream zout = null;
   GZIPOutputStream zout = null;
   
   try{
    out = new ByteArrayOutputStream();
    //zout = new ZipOutputStream(out);
    zout = new GZIPOutputStream(out);
    //zout.putNextEntry(new ZipEntry("randomName"));
    zout.write(str.getBytes(encodingType));
    zout.finish();
    //zout.closeEntry();
    compressed = out.toByteArray();
    
   }
   catch(IOException ex){
    log.error(ex);
    compressed = null;
   }
   finally{
    if(zout != null){
     try {
      zout.close();
     } catch (IOException e) {
      log.error(e);
     }
    }
    if(out != null){
     try {
      out.close();
     } catch (IOException e) {
      log.error(e);
     }
    }
   }
   
   return compressed;
  }
  
  public static final String decompress(byte[] compressed){
   if(compressed == null) 
    return null; 
   
   ByteArrayOutputStream out = null; 
   ByteArrayInputStream in = null; 
   //ZipInputStream zin = null; 
   GZIPInputStream zin = null;
   String decompressed; 
   
   try{
    out = new ByteArrayOutputStream(); 
    in = new ByteArrayInputStream(compressed); 
    //zin = new ZipInputStream(in); 
    zin = new GZIPInputStream(in);
    //ZipEntry entry = zin.getNextEntry(); 
    byte[] buffer = new byte[1024]; 
    int offset = -1; 
    
    while((offset = zin.read(buffer)) != -1) {
     out.write(buffer, 0, offset); 
    }
    
    decompressed = out.toString(); 
   }
   catch(IOException ex){
    log.error(ex);
    decompressed = null;
   }
   finally{
    if(zin != null){
     try {
      zin.close();
     } catch (IOException e) {
      log.error(e);
     }
    }
    if(in != null){
     try {
      in.close();
     } catch (IOException e) {
      log.equals(e);
     }
    }
    if(out != null){
     try {
      out.close();
     } catch (IOException e) {
      log.error(e);
     }
    }
   }
   
   return decompressed;
  }
  }

举报

相关推荐

0 条评论