正在研究 lempel-ziv 减压方法,我们遇到了一些麻烦。像下面这样的文本行不会正确解压。
----------+----+----+----+----+----+----+----+----
它变得像下面这样,把下一行弄得一团糟。
----------+----+----+----+----+----+----+----+
你看到代码中有任何错误吗?
public void lzDecompression(String filePath, String newFileName) throws IOException {
bReader = new BufferedReader(new FileReader(infile));
StreamTokenizer streamT = new StreamTokenizer(bReader);
//Adds charachters as ordenary characters in stream tokenizer (using
//streamT.ordenaryChar() and
//streamT.wordChars()). # is special character for compression.
String outputData = "";
int offset, length;
while (streamT.nextToken() != StreamTokenizer.TT_EOF) {
switch (streamT.ttype) {
case StreamTokenizer.TT_WORD:
searchBuffer.append(streamT.sval);
outputData += streamT.sval;
trimSearchBuffer();
break;
case StreamTokenizer.TT_NUMBER:
offset = (int)streamT.nval;
streamT.nextToken();
//Checking if a word comes after the number instead of
//separator => number was part of word
if (streamT.ttype == StreamTokenizer.TT_WORD) {
searchBuffer.append(offset+streamT.sval);
outputData += offset+streamT.sval;
break;
}
streamT.nextToken();
length = (int)streamT.nval;
String output = searchBuffer.substring(offset, offset+length);
outputData += output;
searchBuffer.append(output);
trimSearchBuffer();
break;
}
}
//Writes outputData to file
}
}