io
- import java.lang.io;
- 입출력을 담당하는 클래스
- 컴퓨터 내/외부 장치와 프로그램간 데이터를 주고 받는 것
스트림
- 데이터를 운반하는 연결통로
- 단방향 통신만 가능하며, 입출력 동시 수행 불가
바이트스트림
입력스트림 | 출력스트림 | 입출력대상 |
---|
FileInputStream | FileOutputStream | 파일 |
ByteArrayInputStream | ByteArrayOutputStream | 메모리(Byte배열) |
PipedInputStream | PipedOutputStream | 프로세스(프로세스 간 통신) |
AudioInputStream | AudioOutputStream | 오디오 장치 |
- InputStream
- 주요 메서드
abstract int read(): 입력스트림에서 1byte 읽어 정수로 리턴
int read(byte[] b): 배열에 저장된 데이터 갯수 반환. 스트림 끝에 도달하면 -1 반환
int read(byte[] b, int off, int len): offset에 시작위치 설정
- OutputStream
- 주요 메서드
abstract void write(int b)
void write(int b) : 1바이트의 데이터를 출력 스트림으로 보냄
void write(byte[] b, int offset, int length): offset에 시작위치 설정
문자 기반 스트림
- Character Stream
- 문자기반의 2byte를 처리하는 스트림
입력스트림 | 출력스트림 | 입출력대상 |
---|
FileReaderStream | FileWriterStream | 파일 |
charArrayReader | charArrayWriter | 메모리(Byte배열) |
PipedReaderStream | PipedWriterStream | 프로세스(프로세스 간 통신) |
AudioReaderStream | AudioWriterStream | 오디오 장치 |
- 입력스트림의 부모 클래스: Reader
- 출력스트림의 부모 클래스: Writer
보조스트림
- Bridge Stream
- 스트림의 기능을 보완해줌. 데이터 주고 받는 기능은 X
- 스트림의 기능을 향상시키거나 새로운 기능을 추가함
바이트기반 스트림의 보조스트림
입력스트림 | 출력스트림 | 비고 |
---|
FilterInputStream | FilterOutputStream | 필터를 이용한 입출력 수행 |
BufferedInputStream | BufferedOutputStream | 버퍼를 이용한 입출력 수행 |
DataInputStream | DataOutputStream | 입출력 스트림에서 자바 기본타입으로 데이터 읽어오게 함 |
ObjectInputStream | ObjectOutputStream | 객체를 읽어들이고, 읽어들인 객체를 역직렬화함 |
PushbackInputStream | - | 다른 입력스트림에 버퍼를 이용해 push back이나 unread 등의 기능 추가 |
- | PrintStream | 다른 출력스트림에 버퍼를 이용해 다양한 데이터 출력하는 기능 추가 |
문자기반 스트림의 보조스트림
입력스트림 | 출력스트림 | 비고 |
---|
FilterReader | FilterWriter | 필터를 이용한 입출력 수행 |
BufferedReader | BufferedWriter | 버퍼를 이용한 입출력 수행 |
DataReader | DataWriter | 입출력 스트림에서 자바 기본타입으로 데이터 읽어오게 함 |
ObjectReader | ObjectWriter | 객체를 읽어들이고, 읽어들인 객체를 역직렬화함 |
PushbackReader | - | 다른 입력스트림에 버퍼를 이용해 push back이나 unread 등의 기능 추가 |
- | PrintWriter | 다른 출력스트림에 버퍼를 이용해 다양한 데이터 출력하는 기능 추가 |
사용방법
// 기반 스트림 생성
FileInputStream a = new FileInputStream("text.txt");
// 기반스트림을 이용하여 보조스트림 생성
BufferedInputStream b = new BufferedInputstream(a);
b.read();
// 보조스트림 b(Buffered)를 이용하여 데이터를 읽음
- 파일에 입출력을 하기 위한 스트림
- 텍스트 파일을 다룰때는 FileReader/FileWriter 추천
- BufferedInputStream(InputStream, size)
- size: 한번에 읽어올 사이즈. 5라면 5byte를 한번에 처리한다는 뜻
- read메서드 호출 시 BufferedInputStream이 버퍼크기만큼 데이터를 읽어서 내부버퍼에 저장
- BufferedOutputStream(OutputStream, size)
- size: write메서드를 이용한 출력 저장 후, 버퍼가 가득차면 모든 내용 출력
- 마지막 출력부분이 버퍼에 남는 경우가 있으므로 전용 메서드로 남김없이 출력해야함
- flush(): 버퍼의 모든 내용 출력 후, 버퍼 닫음
- close(): 버퍼의 모든 내용 출력 후 BufferedOutputStream이 사용하던 모든 자원 반환
Reader/Writer
BufferedReader
BufferedWriter
- System.out.print("");