我需要逐行處理文件,並想知道行開始的偏移量。 因爲BufferedInputStream中沒有readLine,所以我編寫了自己的readLine。 它工作正常,但偏移量。當文件長度變長時,偏移返回不正確的值。 我的代碼有什麼問題?MyBufferedInputStream有什麼問題?
class MyBufferedInputStream extends BufferedInputStream {
long offset = 0;
public MyBufferedInputStream(InputStream in) {
super(in);
}
public String readLine() throws IOException {
int b, i = 0;
byte[] buf = new byte[256];
while (true) {
b = read();
offset++;
if (b == -1)
return null;
else if (b == '\n')
return (new String(buf));
else // assume line in not longer than 256
buf[i++] = (byte) b;
}
}
public long getOffset() {
return offset;
}
public void resetOffset() {
offset = 0;
}
}
'BufferedReader'有一個'readLine()' - 我建議你使用它。 – ddmps 2013-02-26 12:31:47
你爲什麼不使用BufferedReader? http://developer.android.com/reference/java/io/BufferedReader.html – shazin 2013-02-26 12:32:38
我知道。它不是比BufferedInputStream慢嗎? – user1301568 2013-02-26 12:34:32