我一直在尝试创建一个可以设置为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)外,我不允许使用其他任何东西