E/S de arquivos com charset padrão para StandardCharsets explícito
Use leitores e escritores de Files com constantes StandardCharsets em vez do comportamento de charset padrão da plataforma e busca por nome de charset.
Comparação de Código
✕ 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);
}
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Resultados portáveis
Os mesmos bytes são decodificados de forma idêntica em qualquer máquina.
Constante predefinida
StandardCharsets.UTF_8 não pode conter um nome de charset com erro de digitação.
API de arquivos moderna
Path, buffering e codificação são expressos em uma única operação.
Abordagem Antiga
Charset padrão da plataforma
Abordagem Moderna
Charset padrão explícito
Desde o JDK
7
Dificuldade
Iniciante
Suporte JDK
E/S de arquivos com charset padrão para StandardCharsets explícito
Disponível
Amplamente disponível desde o JDK 7 (julho de 2011)
Como funciona
Construtores de Reader e Writer que dependem do charset padrão fazem o comportamento do arquivo depender do ambiente de execução. Files.newBufferedReader() e newBufferedWriter() aceitam um Charset explícito, enquanto StandardCharsets fornece constantes garantidas como UTF_8 sem busca por string ou UnsupportedCharsetException.
Documentação Relacionada
Prova