0

正在研究 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
        }
    }
4

0 回答 0