前言 :
考慮你在 Linux 有個 gz 過後的檔案, 但你不想解壓縮後再讀取該檔案的內容. 你可以透過 java.util.zip.GZIPInputStream 來直接讀取 .gz 檔案的解壓縮後的檔案內容.
範例代碼 :
你可以使用 gzip 來建立 .gz 檔案, 考慮你有檔案 "test.txt" :
Ps. 如果你使用 tar 來建立 .gz, 在建立完的 .gz 檔案會帶有檔案的訊息, 因此你在使用 zcat 檢視時會出現一些前置的 "雜訊" :
底下為範例代碼透過 Java 直接讀取 .gz 內容 :
- GZIPInputStreamEx.java : 一行行讀取 test.txt.gz 內容
- package test.stlib;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.Reader;
- import java.util.zip.GZIPInputStream;
- public class GZIPInputStreamEx {
- public static void main(String[] args) throws Exception{
- String file_path = "test.txt.gz";
- String encoding = "UTF-8";
- File testfile = new File(file_path);
- InputStream is = new FileInputStream(testfile);
- Reader decoder = new InputStreamReader(new GZIPInputStream(is), encoding); // 此行為關鍵代碼!
- BufferedReader br = new BufferedReader(decoder);
- String line = null;
- while((line=br.readLine())!=null)
- {
- System.out.printf("\t[Info] Read: '%s'\n", line);
- }
- br.close();
- }
- }
* 鳥哥 Linux 私房菜 - 第九章、檔案與檔案系統的壓縮與打包
沒有留言:
張貼留言