Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

memo6759 님의 블로그

2025-09-22(학습 리뷰) 본문

HDC 학습일지

2025-09-22(학습 리뷰)

heewon09 2025. 9. 23. 00:31

InputStream  vs InputStreamReader

  • InputStream
    • 바이트 단위 (byte[])로 데이터를 읽는 최상위 추상 클래스
    • FileInputStream, BufferedInputStream 등 하위 클래스 있음
    • 주로 이미지, 동영상, 바이너리 파일 처리 시 사용
  • InputStreamReader
    • InputStream -> 문자 단위로 변환 (byte -> char)
    • 인코딩 지정 가능 (UTF - 8, Ms949 등)
    • FileReader와 비슷하지만, FileReader는 인코딩을 지정 못함
FileInputStream fis = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");

int data;
while ((data = isr.read()) != -1) {
    System.out.print((char) data);
}
isr.close();

FileInputStream vs FileReader

  • FileInputStream -> 바이트 단위 (byte)
  • FileReader -> 문자 단위 (char)
  • 텍스트 파일 읽기 라면 FileReader가  더 편함 (인코딩만 맞으면)
  • 이미지, mp3, pdf 같은 바이너리라면 반드시 FileInputStream
FileInputStream fis = new FileInputStream("a.txt");
int data;
while((data = fis.read()) != -1){
    System.out.print((char)data);
}
fis.close();


FileReader fr = new FileReader("a.txt");
int data;
while((data = fr.read()) != -1){
    System.out.print((char)data);
}
fr.close();

FileWriter & FileReader로 파일 복사

 

FileReader로 읽고 FileWriter로 쓰기

 

  • 텍스트 파일 복사 예제.
  • FileReader로 원본을 읽고, FileWriter로 새 파일에 씀.
  • 이 경우 한 글자/한 줄씩 읽고 바로 쓰는 구조.

 

FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");

int data;
while((data = fr.read()) != -1) {
    fw.write(data);
}

BufferedReader 사용하기

  • 속도 빠름 (버퍼에 데이터 모았다가 읽음) 또한 입력 작업의 효율을 높이기 위해서 임시로 읽은 데이터를 저장할 수 있는 버퍼를 제공
  • BufferedReader는 보조스트림으로 실제 데이터 소스(파일, 키보드 입력, 네트워크 입력)와 직접 연결이 불가능하므로 먼저 데이터소스와 연결이 되는 스트림객체를 생성하고 보조스트림 연결
  • readLine() 사용 가능 → 한 줄 단위로 읽기 가능
BufferedReader br = new BufferedReader(new FileReader("input.txt"));
FileWriter fw = new FileWriter("output.txt");

String line;
while ((line = br.readLine()) != null) {
    fw.write(line + "\n");
}

br.close();
fw.close();

클래스단위용도특징/비고

InputStream byte 입력 (추상 클래스) 하위 클래스: FileInputStream
InputStreamReader char 바이트 → 문자 변환 인코딩 지정 가능
FileInputStream byte 파일 입력 이진 데이터 처리
FileReader char 파일 입력 기본 인코딩 사용, 텍스트 파일 전용
FileWriter char 파일 출력 기본 인코딩 사용
BufferedReader char 보조 스트림(입력) readLine(), 성능↑
BufferedWriter char 보조 스트림(출력) newLine(), 성능↑