자바(Java) - io 입출력 개념 및 특징 설명

안녕하세요

어제 자바 글을 좀 썼어야 했는데

컴퓨터에 이상이 생기는 바람에 못썼습니다.


이번 시간에는 자바에서 잘 활용되는 io 입출력에 대해 글을 쓸까 합니다.

일단 아래에 개념적인 내용을 쓰겠습니다.

IO
/////////////////////////////////////////////////
1. Stream이란?
   1] Data Source (File, 키보드, 원격 컴퓨터) : 데이터의 근원
   2] Data Destination (파일, 모니터, 프린터, 메모리) : 데이터가 최종적으로 도착하는 곳

   데이터 소스ㅇ=====>ㅇ 프로그램 ㅇ======>ㅇ 데이터 목적지
                   입력스트림                         출력스트림

ex) System 클래스의 InputStream 타입의 클래스 변수: in
        PrintStream 타입의 클래스 변수: out/err

 2. Stream 의 특징
1] FIFO구조(First In First Out)
2] 단방향
3] 스트림에 들어간 데이터가 처리되기 전에는
  스트림을 사용하는 스레드는 블럭킹 상태에 빠진다.
        4] 유연한 구조

3. 스트림의 구분
    1] 스트림에서 다루는 데이터가 무엇이냐에 따른 구분
|
+---byte 기반 스트림(1byte 단위로 데이터가 이동)
| .....> XXXInputStream/OutputStream
+---char 기반 스트림(2byte 단위로 데이터가 이동)
  ......> XXXReader/Writer

2] 스트림 안에 들어온 데이터를 그대로 보내느냐,
   아님 가공 절차를 거친 뒤 보내느냐에 따른 구분
|
+---Node 스트림: 데이터 소스와 직접 연결가능한 스트림
|  cf> 날달걀을 그대로 내보내는 스트림
+---Filter 스트림: 데이터 소스에 직접 연결은 불가능하고 데이터 소스에                         직접 연결한  노드 스트림을 가공하는 역할을 하는 스트림이다.
 cf> 날달걀을 가공해서 가령, 맥반석 달걀로, 또는 달걀 후                           라이 등으로 만들어 보냄 ...따라서 노드스트림과 연결해서 사용해야함.


아래에 위의 설명을 좀 요약한 그림이 있으니 참고하시길 바랍니다



댓글 없음:

댓글 쓰기