首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Huffman编码文件保存

Huffman编码文件保存
EN

Stack Overflow用户
提问于 2012-11-06 23:28:47
回答 1查看 785关注 0票数 0

我写了一个程序,使用霍夫曼编码获取.txt文件并对其进行压缩。该程序获取压缩代码并将其另存为.hzip文件。在我尝试压缩并保存一个包含换行符的文件之前,代码运行得很好。这是我保存文件的代码:

代码语言:javascript
复制
private void codeToFile() {

    String code = "";
    char letter;

    String fileName = this.encodeFileName.replace(".txt", ".hzip");

    FileOutputStream byteWriter = null;
    FileInputStream reader = null;
    try {

        byteWriter = new FileOutputStream(fileName);
        reader = new FileInputStream(this.encodeFileName);

        while (reader.available() > 0) {
            letter = (char) reader.read();

            code += hCode.get(letter);

            if (code.length() > 7) {
                int c = Integer.parseInt(code.substring(0, 8), 2)
                        + Byte.MIN_VALUE;
                byteWriter.write((byte) c);
                code = code.substring(8);
            }
        }

        if (code.length() > 0 && code.length() <= 7) {
            code += "0000000";
            int c = Integer.parseInt(code.substring(0, 8), 2)
                    + Byte.MIN_VALUE;
            byteWriter.write((byte) c);
        }
        byteWriter.close();

    } catch (IOException ex) {
        ex.printStackTrace();
    }
    System.out.println("===============================");
    System.out.println("File Created: " + fileName);

} 

我的错误总是出现在下面这一行:

代码语言:javascript
复制
int c = Integer.parseInt(code.substring(0, 8), 2)
                        + Byte.MIN_VALUE;

我得到的具体错误是:异常在线程"AWT-EventQueue-0“java.lang.NumberFormatException:对于输入字符串:"110001nu”。我不明白为什么换行符会导致这个问题。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-11-06 23:36:09

可能您的hCode映射没有包含新行'letter‘的条目,因此hCode.get(letter)返回'null',您在code.substring(0, 8)中获取它的前两个字母

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13254210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档