티스토리 뷰
728x90
반응형
IO(Input/Output)
IO 란 자바의 자바의 기본적인 데이터 입출력(Input/Output)을 말한다. API 는 java.io 패키지에서 제공하고 있다.
해당 패키지에는 다양한 입출력 스트림 클래스를 제공하고 있다.
InputStream(입력스트림) & OutputStream(출력스트림)
- InputStream : 프로그램 데이터를 입력 받을 때 (데이터가 들어옴)
출발지 : 키보드, 파일, 네트워크 상의 프로그램 - OutputStream : 프로그램이 데이터를 보낼 때 (데이터가 나감)
출발지 : 모니터, 파일, 네트워크 상의 프로그램
java.io 패키지 주요 클래스 | 설명 |
File | 파일 시스템의 파일 정보를 얻기 위한 클래스 |
Console | 콘솔로부터 문자를 입출력하기 위한 클래스 |
InputStream / OutputStream | 바이트 단위 입출력을 위한 최상위 입출력 스트림 추상 클래스 |
FileInputStream / FileOutputStream DataInputStream / DataOutputStream ObjectInputStream / ObjectOutputStream PrintStream BufferedInputStream / BufferedOutputStream |
바이트 단위 입출력을 위한 하위 스트림 클래스 |
Reader / Writer | 문자 단위 입출력을 위한 최상위 입출력 스트림 추상 클래스 |
FileReader / FileWriter InputStreamReader / OutputStreamWriter PrintWriter BufferedReader / BufferedWriter |
문자 단위 입출력을 위한 하위 스트림 클래스 |
Stream 클래스
- 바이트 기반 : 그림, 멀티미디어, 문자 등 모든 종류 데이터 주고받기 가능
- 문자 기반 : 문자만 주고받기 가능
구분 | 바이트 기반 스트림 | 문자 기반 스트림 | ||
입력 스트림 | 출력 스트림 | 입력 스트림 | 출력 스트림 | |
최상위 클래스 | InputStream | OutputStream | Reader | Writer |
하위 클래스 (예.파일을 읽고 저장할때) |
XXXInputStream (FileInputStream) |
XXXOutputStream (FileOutputStream) |
XXXReader (FileReader) |
XXXWriter (FileWriter) |
InputStream 주요 메소드 (Byte 기반 입력 스트림)
Return Type | Method | Remarks |
int | read() | 입력 스트림으로 1바이트를 읽고 읽은 바이트를 반환. 더이상 읽을 수 없을때 -1 반환. |
int | read(byte[] b) | 입력 스트림으로부터 읽은 바이트들을 바이트 배열에 저장하고 읽은 바이트의 수를 반환. 더이상 읽을 수 없을때 -1 반환. |
int | read(byte[] b, int off, int len) | 입력 스트림으로부터 len개의 바이트만큼 읽고 바이트 배열에 b[off]부터 len개까지의 데이터를 저장하고 읽은 바이트의 수를 반환. 만약 len개의 데이터를 모두 읽지 못하면 실제 읽은 바이트 수를 반환. 더이상 읽을 수 없을때 -1 반환. |
void | close() | 사용한 시스템의 자원을 반납하고 입력 스트림을 닫는다. |
- read()
InputStream is = new InputStream("C:/test.jpg");
int readByte;
while( (readByte = is.read()) != -1 ) {
//is을 읽되, -1이기 전까지만 읽기.
//read()메소드는 InputStream으로 부터 1Byte씩 읽는다.
//int readByte는 4Byte로 while()을 통해 총 4번 읽을 수 있다는 뜻!
... }
- read(byte[]b)
InputStream is = new InputStream("C:/test.jpg");
int readByteNo;
byte[] readBytes = new byte[100];
while( (readByteNo = is.read(readBytes)) != -1 ) {
//-1이기 전까지, is를 readBytes크기 만큼만 읽기.
//매개값으로 주어진 바이트 배열 길이 만큼만 읽기때문에 read()처럼 100번 루핑해서 읽을 필요가 없다.
//많은 양의 Byte를 읽을땐 ready(byte[]b)메소드를 사용하기!
... }
- read(byte[]b, int off, int len)
InputStream is = ...;
byte[] readBytes = new byte[100];
int readByteNo = is.read(readBytes, 0, 100);
//len개의 Byte만큼 읽고, 매개값으로 주어진 바이트 배열 b[off]부터 len까지 저장한다.
//그리고 읽은 Byte 수인 len개를 return 한다.
OutputStream 주요 메소드 (Byte 기반 출력 스트림)
Return Type | Method | Remarks |
void | write(int b) | 출력 스트림으로 1바이트를 보낸다 |
void | write(byte[] b) | 출력 스트림으로 바이트 배열의 모든 바이트를 보낸다. |
void | write(byte[] b, int off, int len) | 출력 스트림으로 바이트 배열의 b[off]부터 len개까지의 데이터를 보낸다. |
void | flush() | 버퍼에 잔류하는 모든 바이트를 출력한다. |
void | close() | 사용한 시스템의 자원을 반납하고 출력 스트림을 닫는다. |
728x90
반응형
'Java > JAVA' 카테고리의 다른 글
보조 스트림 (0) | 2023.01.16 |
---|---|
File 클래스 (0) | 2023.01.15 |
Garbage Collection (가비지 컬랙션) (0) | 2023.01.11 |
Queue - FIFO (first in first out) (0) | 2023.01.09 |
Stack - LIFO(last in first out) (0) | 2023.01.09 |
댓글
250x250
반응형
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday