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() 讀取一個文本行 */