2021-07-19 강의록_자바 입출력(I/O)

MIN.DI·2021년 7월 19일
0

강의록

목록 보기
37/54

스트림의 종류에는 입력스트림, 출력스트림이 있다.

스트림에는 데이터가 흘러간다.

내가 코딩하는 프로그램이 있고, 내가 입력/출력 수행하는 부분이 있다.
이 때, 내가 만드는 프로그램을 기준으로
프로그램 밖에서 -> 프로그램 안으로 데이터가 흘러 들어오는 흐름이 입력스트림.

자바 입출력(I/O)

  1. 표준 입출력
    모든 입출력 클래스/인터페이스 대부분이 자바 언어 자체로 구현 (속도가 느림)
  2. NIO (Native I/O)
    모든 입출력 구혼 코드를, 자바 언어가 아닌 C/C++언어로 구현(Native library로 구현)
  3. NIO2 (Native I/O 2nd.)
    NIO와 같되, 성능이 더 향상됨.

바이트 기반 스트림

문자를 포함한 모든 입출력에 대한 수행 가능.
이미지, 멀티미디어, 문자 등 모든 종류의 데이터 받고 보내는 것 가능.

문자 기반 스트림

문자(=텍스트파일)만 받고 보낼 수 있도록 특화.

파일의 종류

  1. Binary File (비 문자 기반 파일)
    이미지 파일, 동영상 파일, 실행 파일, 데이터 파일
  2. 텍스트 파일 (문자 기반 파일)
    .txt , .csv, .tsv, ... 등 편집기로 열었을 때, 그 파일의 내용을 사람이 인식할 수 있는 파일

EnterKey의 처리

운영체제마다 Enter Key룰 처리하는 방식이 다름.
1. Windows
엔터키를 누를 때, 2개의 키코드값을 생성.
LF > CR
(따라서 2byte 추가 발생)
2. Mac/Linux/UNIX
LF만 발생 (하지만 효과는 CR > LF와 동일하다)

Line-feed(LF)
라인만 다음줄로 바꾸고, 커서 위치는 그대로.

Carriage-return(CR)
라인 다음줄로 바꾸고, 커서 위치는 제일 앞으로 이동.


바이트 기반 입출력 스트림의 최상위 클래스인 InputStream / OutputStream 은 추상 클래스이다.
->> 따라서 new연산자 사용 불가.
객체 생성은 InputStream을 구현한 Concreate class에서 해야 함. (FileInputStream, BufferInputStream, DataInputStream)

profile
내가 보려고 쓰는 블로그

0개의 댓글