2011-11-04 75 views
1

我正在閱讀zip文件中的一個巨大的txt文件。閱讀最後* n *來自GZIPInputStream的行

GZIPInputStream fstream = new GZIPInputStream(new FileInputStream(zipfile)); 
BufferedReader breader = new BufferedReader(new InputStreamReader(fstream)); 

我需要閱讀最後 n行的文件。

是否有可能做到這一點沒有readline直到eof?

+0

它是無法讀取流/字典壓縮「文件」,除非有類似Z_FULL_FLUSH(和傾倒的字典) – bestsss

回答

4

是否有可能做到這一點,沒有readline直到eof?

沒有和良好由於以下兩個原因:

  1. 不能讀取流倒退。
  2. 您無法取消(g)向後拉鍊。

其中你忽略你不感興趣的行剛看完整個流。

+0

技術上它可以讀取過去Z_FULL_FLUSH標記(提供任何人打擾的地方) – bestsss

-2

如果您可以通過RandomAccessFile的

處理該文件

這會幫助你。

Java : Read last n lines of a HUGE file

+0

請注意,它是gzipped。您不能對流的一部分進行壓縮。即使它沒有被壓縮,你仍然需要知道你感興趣的行的起始字節的確切字節位置。 – BalusC

+0

同意它不直接解決這個問題。 – r0ast3d