Java kursumun bir parçası olarak Huffman algoritması çalıştığı için bir "zip" yazarı ve okuyucusu yazdım.Okuyucuyu genişletmek "okumam" nasıl olur?
Benim sınıf Reader genişletir ve bir nesne Okuyucu r var.
input = new BufferedReader(new HuffmanReader(new FileReader("output.hff")));
String str = input.readLine();
Elbette, bunu açtıktan sonra, ben dosyaya yazdım sıkıştırılmış dize dönmelidir: benim ana yöntemde, ben bu satırları var. Ama dosyanın ilk satırını döndürür!
Benim okuma fonksiyonu:
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;
}
Benim ayıklama penceresi bunu gösterir:
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
Benim okuma işlevini iki kez çağırır. BufferReader'ın tekrar okuma işlevini çağırmasını nasıl durdurabilirim?
1. 'read()' fonksiyonunuzda 'off' ve' len' olarak mı düşünüyorsunuz? 2. BufferedReader'a ihtiyacınız var mı (test yapamazsınız)? – xerx593
'input''dan okuduğunuz tek yer, doğal olarak yalnızca bir satır okuyan input.readLine()' dır. 'Read' işlevinin hiç işe yaramadığını biraz şaşırdım, çünkü aslında içine geçen arabelleğe yazmıyorsunuz, 'cbuf' için yeni bir arabellek atamanız yeterli. – dddsnn
Ayrıca, r.read() tarafından döndürülen sayıyı da kullanmazsınız. Bu kod muhtemelen işe yaramaz. – EJP