InputStream
, OutputStream
클래스FileInputStream
, BufferedInputStream
등…☕ Ex01.java
public static final String SONG_PATH = "src/sec12/chap03/beatles.txt";
아래의 메소드들을 main
메소드에서 하나씩 실행
public static void fileInputStrmEx1 () {
// 💡 FileInputStream
// - InputStream으로부터 상속
// - 파일로부터 데이터를 받아오는데 사용
// - try-with-resources로 스트림 열고 닫음
try (FileInputStream fis = new FileInputStream(SONG_PATH)) {
int readByte;
// 💡 read : 파일로부터 1바이트씩 읽어옴 - 성능 저하
// - 더 읽어올 것이 없을 시 -1 반환
while ((readByte = fis.read()) != -1) {
char readChar = (char) readByte;
System.out.print(readChar); // 한 글자씩 나란히 출력
}
} catch (IOException e) {
e.printStackTrace();
}
} // ⚠️ 한글은 인코딩 설정이 안 되어있으므로 깨져서 나옴
public static void fileInputStrmEx2 () {
// ⭐️ 인코딩 설정 - UTF-8
Charset charset = StandardCharsets.UTF_8;
try (
FileInputStream fis = new FileInputStream(SONG_PATH);
// 💡 InputStreamReader : 바이트 스트림을 문자열 스트림으로
// - 인코딩 적용 등에 사용
InputStreamReader isr = new InputStreamReader(fis, charset)
) {
int readByte;
while ((readByte = isr.read()) != -1) {
char readChar = (char) readByte;
System.out.print(readChar);
}
} catch (IOException e) {
e.printStackTrace();
}
}