생각을 개발하자, 박진형

[Java] IO - 바이트 단위 IO 개념 그리고 예제코드 repo 본문

Java/java basic

[Java] IO - 바이트 단위 IO 개념 그리고 예제코드 repo

imjinbro imjinbro 2017.12.07 15:11

[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 : 키보드, 모니터, 파일, 네트워크



[InputStream]

- byte 단위로 입력값을 읽어올 때 사용함 : 도착지가 프로그램

- 메서드

(1) read() : 1byte씩 읽고 리턴값은 int(4byte 중 1byte만 데이터 저장)로 함, 읽은 바이트를 리턴

- int인 이유 : 읽어온 값이 0 ~ 255(자바 byte는 -128 ~ 127)라서, eof는 -1이라


(2) read(byte[] bytes) : byte[] 배열 크기만큼 1번에 읽음, 대량의 데이터를 읽어올 때, 읽은 바이트 수를 리턴

(3) read(byte[] b, int off, int len) : byte[off]부터 len개 저장, 읽은 바이트 수를 리턴

(4) close : 입력스트림 닫기, 사용한 시스템자원을 돌려줌



[OutputStream]

- byte 단위로 출력하기위해서 사용함 : 출발지가 프로그램

- 메서드

(1) write(int b) : 출력스트림으로 1바이트씩 보냄(int에서 끝 1byte만)

(2) write(byte[] b) : 출력스트림으로 바이트배열 b의 모든 바이트를 보냄

(3) write(byte[] b, int off, int len) : b[off]부터 len개 보냄

(4) flush() : 버퍼에 잔류하는 모든 바이트를 출력

- 내부에 작은 버퍼가 있음 : 출력되기 전 버퍼에 쌓아뒀다가 순서대로 출력

- 쌓여있는 버퍼를 비워버리는 역할


(5) close() : 출력스트림 닫기, 사용한 시스템자원을 돌려줌