기본 문자셋 파일 I/O를 명시적 StandardCharsets로
플랫폼 기본 문자셋 동작과 문자셋 이름 조회 대신 StandardCharsets 상수를 사용하는 Files 리더와 라이터를 사용합니다.
코드 비교
✕ 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
난이도
초급
JDK 지원
기본 문자셋 파일 I/O를 명시적 StandardCharsets로
사용 가능
JDK 7 (2011년 7월) 이후 널리 사용 가능
동작 원리
기본 문자셋에 의존하는 Reader 및 Writer 생성자는 파일 동작이 실행 환경에 따라 달라지게 만듭니다. Files.newBufferedReader()와 newBufferedWriter()는 명시적인 Charset을 받아들이며, StandardCharsets는 문자열 조회나 UnsupportedCharsetException 없이 UTF_8과 같은 보장된 상수를 제공합니다.
관련 문서
증명