問題現象:
在從.gz文件中按一定緩存大小讀取文件時,會莫名其妙地出現重複讀取讓此一讀過的數據:
例如,第一次:
abcdefghi
第二次讀取成了:
jkldefghi
原因:
百思不得其解,後來看網絡上有說法說read方法不一定將緩存填滿。
於是上述現象得到了解釋,即第二次其實只讀到了jkl這幾個字符,而後面的defghi又沒有被清除掉,於是出現了上述現象。
解決方法:
每次讀取後都記錄一下實際讀到的長度,然後根據實際長度轉成字符串。
int len = gZIPInputStream.read(b, 0, bufferSize)
String tempLine = new String(b, 0 , len);
轉載請註明出處:http://blog.csdn.net/gklifg/article/details/40398569