본문 바로가기
혼공자

[혼공단 7기] 혼자 공부하는 자바 6주차

by 도리에몽 2022. 2. 28.

▷ 기본 미션: 입출력 스트림 요약 정리하여 포스팅하기

자바에서 데이터는 스트림(Stream)을 통해 입출력된다. 프로그램이 도착지이면 입력 스트림을, 프로그램이 출발지이면 데이터를 출력해야 하므로 출력 스트림을 사용한다.

 

💡 입출력 스트림의 종류

  • 바이트 기반 스트림: 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용
  • 문자 기반 스트림: 문자 데이터를 읽고 출력할 때 사용
구분 바이트 기반 스트림 문자 기반 스트림
입력 스트림 출력 스트림 입력 스트림 출력 스트림
최상위 클래스 InputStream OutputStream Reader Writer
하위 클래스 (예) XXXInputStream
(FileInputStream)
XXXOutputStream
(FileOutputStream)
XXXReader
(FileReader)
XXXWriter
(FileWriter)

 

OutputStream

모든 바이트 기반 출력 스트림 클래스는 OutputStream 클래스를 상속받아서 만들어진다.

OutputStream의 주요 메소드
write(int b), write(byte[] b), write(byte[] b, int off, int len), flush(), close()

 

InputStream

모든 바이트 기반 입력 스트림은 InputStream 클래스를 상속받아서 만들어진다.

InputStream의 주요 메소드
read(), read(byte[] b), read(byte[] b, int off, int len), close()

 

Writer

모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속받아서 만들어진다.

Writer의 주요 메소드
write(int c), write(char[] cbuf), write(char[] cbuf, int off, int len), write(String str),
write(String str, int off, int len), flush(), close()

 

Reader

모든 문자 기반 입력 스트림은 Reader 클래스를 상속받아서 만들어진다.

Reader의 주요 메소드
read(), read(char[] cbuf), read(char[] cbuf, int off, int len), close()

 

▷ 선택 미션: p. 632 문제 2번 풀고, 풀이 과정 설명하기

- AddLineNumberExample.java

package sec02.verify.exam02;

import java.io.BufferedReader;
import java.io.FileReader;

public class AddLineNumberExample {
    public static void main(String[] args) throws Exception {
        String filePath = "src/sec02/verify/exam02/AddLineNumberExample.java";

        FileReader fr = new FileReader(filePath);
        BufferedReader br = new BufferedReader(fr);

        int rowNumber = 0;
        String rowData;      
        while((rowData=br.readLine()) != null) {
            System.out.println(++rowNumber + ": " + rowData);
        }

        br.close();
    }
}

 

혼공단 가지마......내 방학 가지마.......