Java增量编码不起作用?

Java增量编码不起作用?,java,Java,我正在尝试实现这个代码 在java中,尽管它不起作用。如果我用C++做的很好,所以我一直熬夜解决这个问题。我没有一个错误的俱乐部。 例如: 如果我读一个文件 input.txt 这是对复制文件的测试 它应该在一个文件中写入编码文本,还应该能够读取编码文本并在另一个文件上解码 像这样: 普通文本: 这是一个美好的世界 编码文本: T∗☺ “我 ⌠☼≈┤W°♥·°╩ 解码文本: 这是一个美好的世界。 按任意键继续 我做错了什么 public static void delta_encode(Stri

我正在尝试实现这个代码 在java中,尽管它不起作用。如果我用C++做的很好,所以我一直熬夜解决这个问题。我没有一个错误的俱乐部。

例如:

如果我读一个文件

input.txt

这是对复制文件的测试

它应该在一个文件中写入编码文本,还应该能够读取编码文本并在另一个文件上解码

像这样:

普通文本: 这是一个美好的世界

编码文本: T∗☺ “我 ⌠☼≈┤W°♥·°╩

解码文本: 这是一个美好的世界。 按任意键继续

我做错了什么

public static void delta_encode(String filename) throws IOException{
    FileInputStream reader = null;
    FileOutputStream  writer = null;

    try{
        reader = new FileInputStream (filename);
        writer = new FileOutputStream ("encode.txt");

        char last = 0;
        int c;
        while((c = reader.read()) != -1){
            char current = (char)c;

            writer.write(current - last);
            last = current;
        }

    }finally{
        if(reader != null)
            reader.close();

        if(writer != null)
            writer.close();
    }
}

    public static void delta_decode(String filename) throws IOException{
    FileInputStream reader = null;
    FileOutputStream  writer = null;

    try{
        reader = new FileInputStream (filename);
        writer = new FileOutputStream ("decode.txt");

        char last = 0;
        int c;
        while((c = reader.read()) != -1){
            char current = (char)c;

            writer.write(current + last);
            last = current;
        }


    }finally{
        if(reader != null)
            reader.close();

        if(writer != null)
            writer.close();
    }
}

C和Java之间的一个核心区别是原语的编码

您的错误是假设Java
char
与C的
char
相同。它不是


尝试使用
byte
而不是
char

“它不起作用”不会给我们任何错误指示。请阅读“它不工作”。这是非常模糊的。到底是什么问题?错误?输出不是您所期望的?你需要提供更多的信息。输出不是我所期望的。我想要像这样的普通文本:这是一个美好的世界。编码文本:T☺ “我⌠☼≈┤W°♥·°╩ 解码文本:这是一个奇妙的世界。