Ваш код правильный.Возможно, у вас уже есть файл с именем temp.txt , и поэтому Java записывает текст в существующий файл (заменяя предыдущий контент).Проблема может быть в кодировке, которую вы уже установили в своем файле.
Другими словами, вы не можете (или, по крайней мере, не должны) записывать текст UTF-8 в файл, например, с кодировкой WINDOWS-1250, иначе вы получите точный результат, как вы описали.
Если у вас нет этого файла, Java автоматически создаст файл с кодировкой UTF-8.
Возможные решения:
- Изменить кодировку вашего текущего файла (обычно вы можете открыть его в любом текстовом редакторе, используйте Сохранить как и затем укажите кодировку как UTF-8 .
- Удалите этот файл, и Java создаст его автоматически с правильной кодировкой.
Кстати,Вы должны использовать StandardCharsets
класс вместо String charsetName
, чтобы избежать UnsupportedEncodingException:
new OutputStreamWriter(new FileOutputStream("temp.txt"), StandardCharsets.UTF_8)