I/O Начинающий

Файловый ввод-вывод с кодировкой по умолчанию на явные StandardCharsets

Используйте читатели и писатели Files с константами StandardCharsets вместо поведения кодировки платформы по умолчанию и поиска по имени кодировки.

I/O
✕ Platform-default charset
try (Reader reader = new FileReader(path.toFile())) {
    return readAll(reader);
}
✓ Explicit standard charset
try (BufferedReader reader = Files.newBufferedReader(
        path, StandardCharsets.UTF_8)) {
    return readAll(reader);
}
Заметили проблему в этом коде? Сообщите нам.
🌍

Переносимые результаты

Одни и те же байты декодируются одинаково на любой машине.

🔒

Предопределённая константа

StandardCharsets.UTF_8 не может содержать опечатку в имени кодировки.

🧩

Современный файловый API

Path, буферизация и кодировка выражены в одной операции.

Старый подход
Кодировка платформы по умолчанию
Современный подход
Явная стандартная кодировка
Начиная с JDK
7
Сложность
Начинающий
Файловый ввод-вывод с кодировкой по умолчанию на явные StandardCharsets
Доступно

Широко доступно с JDK 7 (июль 2011)

Конструкторы Reader и Writer, которые полагаются на кодировку по умолчанию, делают поведение файла зависимым от среды выполнения. Files.newBufferedReader() и newBufferedWriter() принимают явную Charset, а StandardCharsets предоставляет гарантированные константы, такие как UTF_8, без поиска по строке или UnsupportedCharsetException.