Varsayılan karakter kümesi dosya G/Ç'sinden açık StandardCharsets'e
Platform varsayılan karakter kümesi davranışına ve karakter kümesi adı aramasına güvenmek yerine StandardCharsets sabitleriyle Files okuyucu ve yazıcılarını kullanın.
Kod Karşılaştırması
✕ 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);
}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Taşınabilir sonuçlar
Aynı baytlar her makinede aynı şekilde çözülür.
Önceden tanımlı sabit
StandardCharsets.UTF_8 yanlış yazılmış bir karakter kümesi adı içeremez.
Modern dosya API'si
Path, arabelleğe alma ve kodlama tek bir işlemde ifade edilir.
Eski Yaklaşım
Platform varsayılan karakter kümesi
Modern Yaklaşım
Açık standart karakter kümesi
JDK'dan itibaren
7
Zorluk
Başlangıç
JDK Desteği
Varsayılan karakter kümesi dosya G/Ç'sinden açık StandardCharsets'e
Mevcut
JDK 7'den (Temmuz 2011) itibaren geniş çapta kullanılabilir
Nasıl çalışır
Varsayılan karakter kümesine dayanan Reader ve Writer yapıcıları, dosya davranışını çalışma ortamına bağımlı hale getirir. Files.newBufferedReader() ve newBufferedWriter() açık bir Charset kabul ederken, StandardCharsets dize araması veya UnsupportedCharsetException olmadan UTF_8 gibi garantili sabitler sağlar.
İlgili Belgeler
Kanıt