Java - переопределение StdOut и запись японского в файл - PullRequest
0 голосов
/ 14 декабря 2018

Я пытался создать класс, который можно установить как Standard Out и который записывает в файл.Пока проблем нет.Однако, когда я пытаюсь записать немного японского в вывод, он не будет отображаться в файлахВсе, что я получаю, это строки "?"персонажи.

Вот так выглядит мой класс OutputStream (я создаю его экземпляр и передаю его «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, но не в файле.

Кто-нибудь знает, что я делаю неправильно?Я проверил с всеми доступными Charsets в импорте StandardCharsets без успеха.

РЕДАКТИРОВАТЬ: Это назначение, и я не могу использовать ничего, кромеСтандартная библиотека Java (поэтому нет импортированных JAR-файлов)

...