생각을 개발하자, 박진형

[Java] 자바 IO - IO, 스트림 개념 본문

Java/java basic

[Java] 자바 IO - IO, 스트림 개념

imjinbro imjinbro 2017.12.07 15:06

[IO 관련 예제코드]
- 레포 : https://github.com/imjinbro/javaBasic/tree/master/src/com/jinbro/source/io
- 아직 포스팅 하지않았지만 스트림 사용(byte, char 단위 각각, 콘솔, 파일 네트워크IO) 예제가 있음
- 네트워크 IO는 콘솔기반 다중접속 채팅프로그램을 구현하면서 익히는 중
(1) 소켓 - 스트림 데이터 통신

(2) 서버(1) : 클라이언트(N) - 대기실 채팅, 명령어까지 구현

(3)  방 만들고 따로 참여해서 방 채팅하는 것은 구현하는 중 
(4) 이후 리팩토링까지..... : 객체지향스럽게(https://imjinbro.github.io/)


[I/O]

- 데이터를 외부에서 읽고, 외부로 출력하는 작업 : Input, Output

- IO : 키보드, 모니터, 파일, 네트워크

- 자바 IO

(1) 스트림을 통해서 입출력 : 스트림은 개념, 스트림을 구체화한 것이 IO 패키지의 클래스들



[스트림이란]

- 단방향으로 연속적이게 흘러가는 형태 : 출발지에서 나와서 도착지로 들어감

- 프로그램이 출발지냐 도착지냐에 따라 스트림 종류가 다름

(1) 도착지 : 입력 스트림(InputStream)

(2) 출발지 : 출력 스트림(OutputStream)


- 프로그램이 네트워크 상의 다른 프로그램과 데이터 교환을 위해 두 스트림이 모두 필요 : 단방향!



[자바 I/O]

- java.io 패키지 내 API 제공 : 다양한 I/O 클래스 제공

- 입출력 스트림 대상에 따라 세분화 : 파일, 콘솔, 네트워크 상 프로그램

- 데이터 타입(단위)에 따라 세분화 : Byte, Char

(1) 바이트 기반 스트림 : 이미지, 멀티미디어, 문자 등 모든 종류의 데이터(XXXInputStream - XXXOutputStream)

(2) 문자 기반 스트림 : 문자만 주고 받을 수 있도록 특화됨(XXXReader - XXXWriter)