Come parte del mio corso Java, ho scritto uno scrittore e lettore "zip" - come funziona l'algoritmo di Huffman.Estendere il lettore, come restituire la mia "lettura"?
La mia classe estende Reader e ha un oggetto Reader r. Nel mio metodo principale, ho queste linee:
input = new BufferedReader(new HuffmanReader(new FileReader("output.hff")));
String str = input.readLine();
deve restituire la stringa decompresso ho scritto al file, dopo la decompressione, naturalmente. Ma restituisce la prima riga del file!
La mia funzione di lettura:
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;
}
finestra Risorse di debug mostra questo:
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
Si chiama la mia funzione di lettura due volte. Come posso impedire a bufferReader di chiamare di nuovo la funzione di lettura?
1. Considera 'off' e' len' nella funzione 'read()'? 2. Hai bisogno di BufferedReader (non puoi testare senza di esso)? – xerx593
L'unico punto in cui si legge da 'input' è in' input.readLine() ', che, naturalmente, legge solo una riga. Sono un po 'sorpreso dal fatto che la tua funzione 'read' funzioni del tutto, perché in realtà non scrivi sul buffer che è passato, ma assegni un nuovo buffer a' cbuf'. – dddsnn
Inoltre non si usa il conteggio restituito da 'r.read().' Questo codice non può funzionare. – EJP