[혼공자] - Chapter 14

SGIYLEVOELR·2022년 2월 27일
0

혼공자

목록 보기
6/6
벌써 6주차라니....
시간 너무 빨리가는 거 같구여...
그동안 혼공족장님 댓글보려고 열심히 공부했는데... 이제 못본다니요....ㅜㅜㅜ
기회되면 다음 혼공족에도 참여해보도록 하겠습니다!!!
몇 백개씩 글 보고 답글다느라 혼공족장님도 고생하셨습니다... 흑흑

(※ 벨로그에서 글자 색상 변경할 수 있다는 거 이제 안 1인...)


입출력 스트림

Stream

  • 데이터가 이동하는 통로
  • InputStream, OutputStream이 있다.
    - 추상 클래스
    • 추상 메소드 Override
    • InputStream :: 외부에서 데이터를 읽음
    • OutputStream :: 외부로 데이터 출력
  • 단일 방향, 연속적 흐름

InputStream

  • 파일 데이터를 읽거나 네트워크 소켓을 통해 데이터를 읽거나 키보드에서 입력한 데이터 읽을 때 사용
  • Method :: read(), read(byte[] b), read(byte[] b, int off, int len), close()
  1. read()
    • 입력스트림으로부터 1바이트를 읽고 읽은 바이트 return
  2. read(byte[ ] b)
    • 입력 스트림으로부터 읽은 바이트들을 매개값으로 주어진 바이트 배열b에 저장하고 실제로 읽은 바이트 수를 return
  3. read(byte[ ] b, int off, int len)
    • len개의 바이트만큼 읽고, 매개값으로 주어진 배열b[off]부터 len개까지 저장, len개 return
    • len개를 모두 읽지 못할 경우 실제 읽은 바이트 수 return
  4. close()
    • 입력스트림 닫기.

Reader

  • 문자 기반 입력 스트림의 최상위 클래스 & 추상 클래스
  • 모든 문자 기반 입력 스트림은 Reader를 상속받아 제작됨

OutputStream

  • Method :: write(int b), write(byte[ ] b), write(byte[ ] b, int off, int len), flush(), close()
  1. write(int b)
    • 출력스트림으로부터 1바이트 보냄
  2. write(byte[ ] b)
    • 출력스트림으로부터 주어진 배열 b의 모든 것을 보냄
  3. write(byte[ ] b, int off, int len)
    • 출력스트림으로 주어진 배열 b[off]부터 len개까지의 바이트 보냄
  4. flush()
    • 버퍼를 지원하는 경우 버퍼에 존재하는 데이터를 목적지까지 보냄
  5. close()
    • 출력스트림 닫기.

Writer

  • 문자 기반 출력 스트림의 최상위 클래스 & 추상 클래스
  • 모든 문자 기반 출력 스트림은 Writer를 상속받아 제작됨

p. 632 문제 2번

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 = "sec02/verify/exam02/AddLineNumberExample.java";

        // 문자 기반 파일 입력 스트림 생성
        // 파일의 경로는 위에서 설정한 filePath를 따른다.
        FileReader fr = new FileReader(filePath);
        // Buffer 보조 스트림 연결
        // 파일 입력 스트림 연결...?
        BufferedReader br = new BufferedReader(fr);

        // 라인 번호 0으로 지정 (변수 선언 및 초기화)
        int rowNumber = 0;
        // rowData(파일을 읽어서 저장할 변수) 선언 및 초기화
        String rowData;
        // 읽은 내용이 null이 되기 전까지 while문 반복
        while((rowData = br.readLine()) != null) {
            // 라인 번호와 함께 내용 출력
            // 이 때 rowNumber 앞에 ++가 붙어있기 때문에 라인 번호는 1부터 시작함.
            System.out.println(++rowNumber + " : " + rowData );
        }

        // 입력 스트림 종료
        br.close();
    }
}
  • 위에서 주석 달은 것처럼 진행이 된다.

0개의 댓글