바이트 기반의 스트림
1. 바이트 기반 스트림
(1) InputStream과 OutputStream
InputStream과 OutputStream은 모든 바이트기반의 스트림의 조상이며 같은 메서드가 선언되어 있다.
cp.)
void close(): 스트림을 닫음으로써 사용하고 있던 자원을 반환한다.
abstract int read(): 1byte를 읽어온다.(0~255 사이의 값), 더 이상 읽어 올 데이터가 없으면 -1을 반환한다. abstract메서드라서 InputStream의 자손들은 자신의 상황에 알맞게 구현해야 한다.
int read(byte[] b): 배열 b의 크기만큼 읽어서 배열을 채우고 읽어 온 데이터의 수를 반환한다. 반환하는 값은 항상 배열의 크기보다 작거나 같다.
int read(byte[] b, int off, int len): 최대 len개의 byte를 읽어서, 배열 b의 지정된 위치(off)부터 저장한다. 실제로 읽어올 수 있는 데이터가 len개보다 적을 수 있다.
flush() 버퍼가 있는 출력 스트림의 경우에만 의미가 있으며, OutputSteam에 정의된 flush()는 아무런 일도 하지 않는다.
프로그램이 종료될 때, 사용하고 닫지 않은 스트림을 JVM이 자동적으로 닫아 주기는 하지만, 스트림을 사용해서 모든 작업을 마치고 난 후에는 close()를 호출해서 반드시 닫아 주어야 한다.
cf.) ByteArrayInputStream과 같이 메모리를 사용하는 스트림과 System.in, System.out과 같은 표준입출력은 닫아 주지 않아도 된다.
cp.) FileInputStream(File fileObj): 파일의 이름이 String이 아닌 File 인스턴스로 지정해주어야 하는 점을 제외하고 FileInputStream(String filePath)와 같다.
import java.io.*;
BufferedInputStream과 BufferedOutputStream의 버퍼크기는 입력소스로부터 한 번에 가져올 수 있는 데이터의 크기로 지정하면 좋다. 보통 입력소스가 파일인 경우 보통 작게는 1024부터 2048 또는 4096 정도의 크기로 하는 것이 보통이며, 버퍼의 크기를 변경해가면서 테스트하면 최적의 버퍼 크기를 알아낼 수 있다.
'Programing > Java' 카테고리의 다른 글
[Java] File 클래스 (0) | 2014.12.16 |
---|---|
[Java] 문자 기반 스트림 (0) | 2014.12.16 |
[Java] 파일I/O 개요 (0) | 2014.12.16 |
[Java] 제네릭 (3) | 2014.12.14 |
[Java] 컬렉션 프레임워크 (0) | 2014.12.14 |