사진올리기 귀찮아서 글로만 쓰면 과연 누가 볼까 1호점



이미지배너

09. I/O by keispace



I/O (입출력)
  • Stream(시냇물, 흐름) 구조를 갖는다.(하드웨어의 특성이라고 볼 수 있음.)
  • stream 공통 특성
    • 단방향
    • 통로.
    • 원칙적으로 순차적.(예외 있음.)
    • 지연발생 가능성이 있음.
    • 추상적(어떤 장치를 사용하던지 사용법이 거의 동일함.)
  • 자바에서 구현하고 있는 Stram방식(Java. io)
    • 모든 스트림 클래스는 상위명이 포함됨.
    • 하위 종류: File~(파일), ByteArray~(메모리), Piped~(프로세스), Auido~(오디오)
    • Byte Stream(저급 스트림)
      • 1 Byte 단위로 전달됨. 대부분의 기기들이 이렇게 전달함.
        • Char Stream보다 빠르지만 불편
      • InputStream(입력 상위 추상클래스)
        • read(): 다음 바이트값을 읽어옴.
  • OutputStream(출력 상위 추상클래스)
    • write(): 다음 바이트값을 출력(씀)
  • Charater Stream(고급 스트림) :이것도 일종의 FilterStream임.
    • 문자단위(java에서는 2 Byte)로 전달.
      • Byte Stream filter의 일종으로 이해하면 됨. (Byte-Char-Byte 전환)
        • Byte Stream보다 느리지만 편함.
      • InputStreamReader(입력 상위 클래스)
        • read(): 다음 문자값을 읽어옴.
  • BufferdReader(라인 입력)
    • 1.5이후 Scanner가 나와서 잘 안쓰는데 ' '(공백)을 입력 받을 수 있기 때문에
      • jdk1.5 이전 버전과 공백입력을 위해 이걸 쓰는걸 추천함.
  • OutputStreamWriter(출력 상위 클래스)
    • write(): 다음 문자값을 출력(씀)
  • SubStram(보조스트림): FilterStream(기존의 스트림을 편하게 처리하기 위한 스트림)
    • PrintStream (output)
      • 버퍼를 이용하여 추가적인 print관련 기능을 수행
        • println(), print(), printf()
        • 길게 Writer 쓸 필요 없이 printWriter만 선언하면 됨(버퍼드와 파일writer선언 할 필요 X)
  • Data(Input/Output)Stream(기본-Filter~-Data~)
    • 장치가 아닌 기존의data를 입출력 하는 방식.(Byte가 아니라 기본 데이터형으로 입출력.
      • 데이터를 묶어서 한번에 처리하므로 변환할 필요도 없고, 따로 연산하지 않아도 되어 편함.
  • RandomAccessFile
    • 스트림의 순차성을 무시하고 임의 접근을 가능하게 해줌.
      • 스트림 클래스가 아님.(기본 입/출력 불가)
        • 대신 DataInput/Output 인터페이스(DataStream 상위)를 구현해서 스트림과 별개로 동일/유사 기능을 구현해 놓음.
  • Object(Input/Output)Stream(객체 스트림)
    • 직렬화(serialize)로 데이터 바이트를 일렬로 세워서 보내는 것.(데이터를 단순화 시켜서 전송)
  • File Class
    • 파일 입출력, 생성, 삭제 등에 관한 작업을 처리하는 클래스.

과제.
원본파일(a.txt)의 내용을 읽어와서 복사본(b.txt) 만들기.
ex) java FileCopy a.txt b.txt  //a.txt 을 복사해서 b.txt로 만들기.
내용이 짧아 파일 생략.

덧글

댓글 입력 영역

와이드리더보드