我的deflater课程无法正常工作

时间:2016-04-12 16:54:17

标签: java compression deflate

我的压缩类工作不正常。当我试图压缩包含句子""的简单文件时,压缩和未压缩返回其他内容。这是我的缩减代码:

public static void inflate(String arg) throws Exception {
        try {
            FileInputStream fin = new FileInputStream(arg);
            InflaterInputStream in = new InflaterInputStream(fin);

            FileOutputStream fout = new FileOutputStream("def.txt");

            int i;
            while ((i = in.read()) != -1) {
                fout.write((byte) i);
                fout.flush();
            }

            fin.close();
            fout.close();
            in.close();

        } catch (Exception e) {
            System.out.println(e);
        }
        new File(arg).delete();
        new File("def.txt").renameTo(new File(arg));
    }

    public static void deflate(String arg) throws Exception {
        try {
            FileInputStream fin = new FileInputStream(arg);

            FileOutputStream fout = new FileOutputStream("def.txt");
            DeflaterOutputStream out = new DeflaterOutputStream(fout);

            int i;
            while ((i = fin.read()) != -1) {
                out.write((byte) i);
                out.flush();
            }

            fin.close();
            out.close();

        } catch (Exception e) {
            System.out.println(e);
        }
        new File(arg).delete();
        new File("def.txt").renameTo(new File(arg));

    }

我用

来称呼它
public static void main(String[] args) {
        try {
            Main.deflate(args[0]);
            Main.inflate(args[0]);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

那么如何修复我的代码呢?我认为问题不在于缩小代码。

1 个答案:

答案 0 :(得分:0)

您的代码似乎按预期工作。

在包含单词“'”的文本文件上运行它返回一个相同的文件。 要确认输出是否相同,请尝试编辑以下行:

Test.inflate("def.txt");

位于您的主要功能中

FileOutputStream fout = new FileOutputStream("output.txt");

来自你的膨胀功能。

然后在你的deflate()和inflate()函数中注释掉以下几行

//new File(arg).delete();
//new File("def.txt").renameTo(new File(arg));

程序现在将输入一个输入文件,我使用了 input.txt ,其中包含“' something'根据您的示例,创建一个缩小的文件 def.txt 和一个 output.txt 文件,该文件是通过膨胀 def.txt 创建的。 / p>

输出文件应与输入文件完全匹配,而缩小的文件应该不同。如果没有,则必须提供有关该程序缺失的更多信息。