Java-覆盖StdOut并将日语写入文件

时间:2018-12-14 13:15:50

标签: java character-encoding save stdout streamwriter

我一直在尝试创建一个可以设置为Standard Out并写入文件的类。到目前为止,没有问题。但是,当我尝试在输出中写一些日语时,它不会显示在文件中。我所得到的只是'?'行字符。

这是我的OutputStream类的外观(我创建了它的一个实例,并将其移交给我的main方法中的“ System.setOut(OutputStream)”)。

public class MyStdOutStream extends OutputStream {
    private OutputStreamWriter out;

    public MyStdOutStream(File file) throws IOException {
        out = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
    }

    @Override
    public void close() throws IOException {
        out.flush();
        out.close();
        super.close();   //No idea if this line does anything...
    }

    @Override
    public void write(int nr) throws IOException {
        out.write(nr);
    }
}

然后,我通过JTextField接受输入(在测试时,稍后它将是一个不同的源),并使用“ System.out.println(String)”进行打印,并将其附加到JTextArea。它在JTextArea中显示为正确的日语,但在File中却不显示。

有人知道我在做什么错吗?我已经在StandardCharsets导入中使用所有可用字符集进行了测试,但是没有成功。

编辑:这是一项作业,除标准Java库(不允许导入的JAR)外,我不允许使用其他任何东西

0 个答案:

没有答案