Day27 :) io

Nux·2021년 10월 14일
0

자바웹개발

목록 보기
27/105
post-thumbnail

io

  • import java.lang.io;
  • 입출력을 담당하는 클래스
  • 컴퓨터 내/외부 장치와 프로그램간 데이터를 주고 받는 것

스트림

  • 데이터를 운반하는 연결통로
  • 단방향 통신만 가능하며, 입출력 동시 수행 불가

바이트스트림

  • byte단위로 데이터 전송
입력스트림출력스트림입출력대상
FileInputStreamFileOutputStream파일
ByteArrayInputStreamByteArrayOutputStream메모리(Byte배열)
PipedInputStreamPipedOutputStream프로세스(프로세스 간 통신)
AudioInputStreamAudioOutputStream오디오 장치
  • InputStream
    • 주요 메서드
      abstract int read(): 입력스트림에서 1byte 읽어 정수로 리턴
      int read(byte[] b): 배열에 저장된 데이터 갯수 반환. 스트림 끝에 도달하면 -1 반환
      int read(byte[] b, int off, int len): offset에 시작위치 설정
  • OutputStream
    • 주요 메서드
      abstract void write(int b)
      void write(int b) : 1바이트의 데이터를 출력 스트림으로 보냄
      void write(byte[] b, int offset, int length): offset에 시작위치 설정

문자 기반 스트림

  • Character Stream
  • 문자기반의 2byte를 처리하는 스트림
입력스트림출력스트림입출력대상
FileReaderStreamFileWriterStream파일
charArrayReadercharArrayWriter메모리(Byte배열)
PipedReaderStreamPipedWriterStream프로세스(프로세스 간 통신)
AudioReaderStreamAudioWriterStream오디오 장치
  • 입력스트림의 부모 클래스: Reader
  • 출력스트림의 부모 클래스: Writer

보조스트림

  • Bridge Stream
  • 스트림의 기능을 보완해줌. 데이터 주고 받는 기능은 X
  • 스트림의 기능을 향상시키거나 새로운 기능을 추가함

바이트기반 스트림의 보조스트림

입력스트림출력스트림비고
FilterInputStreamFilterOutputStream필터를 이용한 입출력 수행
BufferedInputStreamBufferedOutputStream버퍼를 이용한 입출력 수행
DataInputStreamDataOutputStream입출력 스트림에서 자바 기본타입으로 데이터 읽어오게 함
ObjectInputStreamObjectOutputStream객체를 읽어들이고, 읽어들인 객체를 역직렬화함
PushbackInputStream-다른 입력스트림에 버퍼를 이용해 push back이나 unread 등의 기능 추가
-PrintStream다른 출력스트림에 버퍼를 이용해 다양한 데이터 출력하는 기능 추가

문자기반 스트림의 보조스트림

입력스트림출력스트림비고
FilterReaderFilterWriter필터를 이용한 입출력 수행
BufferedReaderBufferedWriter버퍼를 이용한 입출력 수행
DataReaderDataWriter입출력 스트림에서 자바 기본타입으로 데이터 읽어오게 함
ObjectReaderObjectWriter객체를 읽어들이고, 읽어들인 객체를 역직렬화함
PushbackReader-다른 입력스트림에 버퍼를 이용해 push back이나 unread 등의 기능 추가
-PrintWriter다른 출력스트림에 버퍼를 이용해 다양한 데이터 출력하는 기능 추가

사용방법

// 기반 스트림 생성 
FileInputStream a = new FileInputStream("text.txt");
// 기반스트림을 이용하여 보조스트림 생성
BufferedInputStream b = new BufferedInputstream(a);
b.read();
// 보조스트림 b(Buffered)를 이용하여 데이터를 읽음

InputStream/OutputStream

FileInputStream/FileOutputStream

  • 파일에 입출력을 하기 위한 스트림
  • 텍스트 파일을 다룰때는 FileReader/FileWriter 추천

BufferedInputStream/BufferedOutputStream

  • BufferedInputStream(InputStream, size)
    • size: 한번에 읽어올 사이즈. 5라면 5byte를 한번에 처리한다는 뜻
    • read메서드 호출 시 BufferedInputStream이 버퍼크기만큼 데이터를 읽어서 내부버퍼에 저장
  • BufferedOutputStream(OutputStream, size)
    • size: write메서드를 이용한 출력 저장 후, 버퍼가 가득차면 모든 내용 출력
    • 마지막 출력부분이 버퍼에 남는 경우가 있으므로 전용 메서드로 남김없이 출력해야함
      • flush(): 버퍼의 모든 내용 출력 후, 버퍼 닫음
      • close(): 버퍼의 모든 내용 출력 후 BufferedOutputStream이 사용하던 모든 자원 반환

Reader/Writer

BufferedReader

  • Scanner와 유사한 기능 수행

BufferedWriter

  • System.out.print("");

0개의 댓글