일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- job
- Bambino
- DB
- jvm메모리구조
- C
- BCIT
- SpringFramework
- 웹개발
- Java
- MVC
- 웹개발자
- CSS
- html
- 밤비노
- 자바
- Programming
- two pointers
- 웹개발기초
- servlet
- mysql
- 데이터베이스
- microservices
- msa개념
- sql
- coding test
- 코드잇
- 안드로이드
- 리액트프로젝트
- jsp
- MSA
- Today
- Total
초보 개발자의 기록
입출력(I/O) 본문
입출력?
- 입력 (Input)
- 출력(Output)
- 컴픁 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말한다
스트림(Stream)
- 자바에서 입출력을 수행하려면 (어느 한쪽에서 다른 쪽으로 데이터를 전달하려면)
두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것이 스트림
- 데이터를 운반하는데 사용되는 연결통로
- 단방향 통신만 가능 (입력과 출력을 동시에 처리 불가)
- 입력과 출력을 동시에 수행하려면 입력(입력스트림), 출력(출력스트림) 2개의 스트림이 필요
- 먼저 보낸 데이터를 먼저 받게 되어 있어 중간에 건너뜀 없이 연속적으로 데이터 주고 받음 (FIFO)
바이트 기반 스트림 - InputStream , OutputStream
- 입출력 대상의 종류
- 입출력의 단위가 1byte
- 스트림을 사용해서 모든 작업을 마치고 난 후에는 close() 를 호출해서 반드시 닫아줘야 함
* ByteArrayInputStream 고 같이 메모리를 사용하는 스트림, System.in, System.out 같은 표준 입출력 스트림 닫지x
1) 파일 - 입력(FileInputStream) 출력(OutputStream)
2) 메모리 - 입력(ByteArrayInputStream) 출력(ByteArrayOutputStream)
입출력의 대상에 따라 읽고 쓰는 방법이 다를것이기 때문에 각 상황에 알맞게 구현하라는 의미로 추상메서드로 정의
-InputStream : abstract int read()
-OutputStream : abstract void write(int b)
-read, write 구현되어있지 않으면 다른 입출력 메서드 쓸수없음. 반드시 구현되어야하는 핵심 메서드
보조 스트림
- 보조스트림은 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터 입출력할 수 있는 기능은 없지만
스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있음
- 스트림을 먼저 생성한 후에 이를 이용해서 보조스트림을 생성해야 함
문자기반 스트림 - Reader, Writer
- 2byte인 문자를 처리하기 위해 사용
- 문자데이터를 입출력할 떄는 바이트기반 스트림 대신 문자기반 스트림 사용
InuptStream -> Reader
OutputStream -> Writer
* 예외 > ByteArrayInputStream -> CharArrayReader
ByteArrayOutputStream -> CharArrayWriter
ByteArrayInputStream, ByteArrayOutputStream
- 메모리, 바이트배열에 데이터를 입출력하는데 사용되는 스트림
- 다른 곳에 입출력하기 전에 데이터를 임시로 바이트 배열에 담아서 변환 등의 작업을 하는데 사용
- 바이트배열은 사용하는 자원이 메모리 밖에 없으므로 가비지컬렉터에 의해 자동적으로 자원을 반환하므로 close() x
'JAVA > Basic' 카테고리의 다른 글
Java Introducion (0) | 2023.04.08 |
---|---|
예외처리 (Exception Handling) (0) | 2021.08.19 |
Class 정의시 주요 구성요소 (0) | 2021.08.05 |
Getter , Setter (0) | 2021.08.05 |
연산자(Operator) (0) | 2021.08.02 |