Java[이것이 자바다 CH18]

이도환·2023년 8월 30일
post-thumbnail

스터디 링크
코드 링크

데이터 입출력

18.1 입출력 스트림

  • 스트림은 단방향으로 데이터가 흐르는 것을 말한다.
    프로그램을 기준으로 데이터가 들어오면 입력 스트림, 나가면 출력 스트림이 된다.

    자바는 데이터 입출력 관련 라이브러리를 java.io에서 제공하고 있다.

18.2 바이트 출력 스트림

  • OutputStream은 바이트 출력 스트림의 최상위 클래스이다. 모든 바이트 클래스 스트림은 OutputStream로부터 클래스를 상속 받아서 만들어진다.
  • 1바이트 출력
    write메소드는 매개값에서 끝 1바이트만 출력한다.
    출력 스트림을 더이상 사용하지 않을 때는 close() 메소드를 통해 메모리를 해제하는 것이 좋다.
  • 바이트 배열 출력
    일반적으로 1바이트를 출력하는 경우는 드물고, 보통 바이트 배열을 통째로 출력하는 경우가 많다. write(byte[])메소드는 매개값으로 주어진 모든 바이트를 출력한다.

18.3 바이트 입력 스트림

  • InputStream은 바이트 입력 스트림의 최상위 클래스로 모든 입력 바이트 스트림은InputStream클래스를 상속 받는다.
  • 1바이트 읽기
    read()메소드는 입력 스트림으로부터 1바이트씩 읽고 리턴한다. write()와 특성은 같은 반대방향 메소드라고 생각하면 된다.
  • 바이트 배열 읽기
    일반적으로 1바이트를 입력하는 경우는 드물고, 보통 바이트 배열을 통째로 입력하는 경우가 많다. read(byte[])메소드는 매개값으로 주어진 모든 바이트를 입력한다.

18.4 문자 입출력 스트림

  • 바이트 입출력 스트림에 대응하는 입출력 스트림은 Reader,Writer가 있다.
  • 문자 출력Writer 클래스

    writer클래스는 outStream과 동일하지만 출력 단위가 char라는 차이점이 있다.
  • 문자 읽기 Reader는 문자 입력 클래스의 최상위 클래스이다.

18.5 보조 스트림

  • 보조 스트림이란 다른 스트림과 연결되어 여러가지 편리한 기능을 제공해주는 스트림을 말한다.
InputStream is = new FileInputStream("...");
InputStreamReader reader = new InputStreamReader(is);

18.6 문자 변환 스트림

  • 바이트 스트림에서 입출력할 데이터가 문자라면 문자 스트림으로 변환해서 사용하는 것이 좋다.
  • inputStream 을 Reader로 변환
InputStream is = new FileInputStream(",,,");
Reader reader = new InputStreamReader(is);
  • OutputStream 을 Writer로 변환
    위와 같은 원리로 변환 시킨다.

18.7 성능 향상 스트림

  • buffer를 사용하는 것이 성능 향상 면에서 더 효율적이다.

18.8 기본 타입 스트림

  • 바이트 스트림에 DataInputStream과 연결하면 기본 타입의 값으로 출력 가능하다.

18.9 프린트 스트림

  • 프린터와 유사하게 출력하는 print,println,printf메소드를 가지고 있는 보조 스트림이다.

18.10 객체 스트림

  • 자바는 메모리에 생성된 객체를 파일 또는 네트워크로 출력할 수 있다. 객체를 출력하려면 필드값을 일렬로 늘어선 바이트로 변경해야 하는데, 이것을 직렬화라고 한다. 반대로 직렬화된 바이트를 객체의 필드값으로 복원하는 것을 역직렬화라고 한다.
    ObjectInputStreamObjectOutputStream은 객체를 입출력할 수 있는 보조 스트림이다.
  • Serializable 인터페이스
    자바는 Serializable 인터페이스를 구현한 클래스만 직렬화할 수 있도록 제한한다.
  • serialVersionUID 필드
    직렬화할때 사용된 클래스와 역직렬화할 떄 사용된 클래스는 기본적으로 동일한 클래스여야한다.

18.11 files 클래스

  • File클래스
File file = new File("경로");


profile
개발 블로그

0개의 댓글