memo6759 님의 블로그
2025-09-22(학습 리뷰) 본문
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(), 성능↑ |
'HDC 학습일지' 카테고리의 다른 글
| 2025-09-24(SQL-1) (0) | 2025.09.24 |
|---|---|
| 2025-09-23(깃허브 사용법) (0) | 2025.09.24 |
| 2025-09-22(자바 Stream, git) (0) | 2025.09.22 |
| 2025-09-17(내장 함수 (0) | 2025.09.18 |
| 2025-09-17(컴프리헨션, 내장 함수,리스트, 튜플, 딕셔너리)-1 (0) | 2025.09.17 |