作爲我的Java課程的一部分,我編寫了一個「zip」作家和讀者 - 與霍夫曼算法一樣。擴展閱讀器,如何返回我的「閱讀」?
我的課程擴展了Reader,並有一個對象Reader r。 在我的主要方法,我有這行:
input = new BufferedReader(new HuffmanReader(new FileReader("output.hff")));
String str = input.readLine();
它應該返回字符串解壓我寫的文件,解壓縮它,當然之後。但它返回文件的第一行!
我讀功能:
public int read(char[] cbuf, int off, int len) throws IOException {
//...
r.read(buffer,0,8192)
//does the decompress process
String fnlStr = ... //The final result
cbuf = fnlStr.toCharArray();
//close streams
return cbuf.length;
}
我的調試窗口顯示了這一點:
HuffmanReader.read(char[], int, int) line: 23
BufferedReader.fill() line: not available
BufferedReader.readLine(boolean) line: not available
BufferedReader.readLine() line: not available
Run.main(String[]) line: 23
它要求我讀功能的兩倍。如何停止bufferReader再次調用read函數?
1.您在'read()'函數中考慮過'off'和'len'嗎? 2.你需要這個BufferedReader嗎(你不能沒有它測試)? – xerx593
您從'input'中讀取的唯一地方是在'input.readLine()'中,它自然只讀取一行。我有點驚訝,你的'read'函數完全可以工作,因爲你實際上並沒有寫入傳入的緩衝區,而只是給'cbuf'分配一個新的緩衝區。 – dddsnn
你也不會使用'r.read()返回的計數。「這段代碼不可能工作。 – EJP