java I/O: 處理GZip壓縮包

 import java.io.*;
import java.util.zip.*;
public class GzipMaker {

 /**
  * @param args
  * @throws FileNotFoundException
  */
 public static void main(String[] args)  {
  // TODO Auto-generated method stub
  File in=new File(args[0]);
  if(!in.exists())  
   try {
    in.createNewFile();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  
  File out=new File(args[1]);
  if(out.exists())
   out.delete();
  else
   try {
    out.createNewFile();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
     File out2=new File(args[2]);
  if(out2.exists())
    out2.delete();
   else
    try {
     out2.createNewFile();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   
      try {
  FileInputStream instr=new FileInputStream(in);
  GZIPOutputStream outGZ=new GZIPOutputStream(new FileOutputStream(out));
  int a;
  while((a=instr.read())!=-1)
   outGZ.write(a);
  instr.close();
  outGZ.close();
  
  
  System.out.println("Reading file form "+out.getName()+" to monitor");
  BufferedReader bufr=new BufferedReader
                          (new InputStreamReader
                           (new GZIPInputStream
                             (new FileInputStream(out))));
  String s;
  while((s=bufr.readLine())!=null)
  {
   System.out.println(s);
  }
  bufr.close();
  
  System.out.println("Writing decompreesion to "+out2.getName());
  GZIPInputStream inGZ=new GZIPInputStream(new FileInputStream(out));
  FileOutputStream outstr=new FileOutputStream(out2);
  while((a=inGZ.read())!=-1)
  {outstr.write(a);}
  inGZ.close();
  outstr.close();
  
 }catch (IOException e1)
 {
  e1.printStackTrace();
 }
     
 }

}

 

 

/*學習心得
1.File類,可以對文件對象作各種操作
boolean exists() 判斷流所指向的文件對象是否存在 
boolean creatNewFile()  當且僅當不存在具有此抽象路徑名指定的名稱的文件時,原子地創建由此抽象路徑名指定的一個新的空文件。
boolean delete()  刪除流所指向的文件

 

2.InputStream類
read()  讀取一個字節,返回是一個int型的數字,每個字節都被轉化爲[0,255]的之間的一個整數,如果讀到了末尾,則返回-1

 

3.OutputStream類
write()  寫一個字節,只寫int的低8位,忽略高24位

 

4.InputStreamReader將InputStream轉換爲Reader
OutStreamWriter將OutputStream轉換爲Writer

 

5.BufferedReader   

String readline()   讀取一個文本行   */

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章