기반 스트림은 데이터 소스와 직접 연결되는 스트림으로, 실제 데이터 읽기나 쓰기 작업을 수행한다. 이 스트림들은 데이터의 실제 입력 소스(파일, 메모리, 네트워크 연결 등)에 직접 연결되어 데이터를 바이트 단위로 읽거나 쓰는 기본적인 기능을 제공한다.
보조 스트림은 기반 스트림 또는 다른 보조 스트림에 연결되어 사용된다. 이 스트림들은 데이터를 변환하거나, 추가 기능을 제공하거나, 성능을 향상시키는 역할을 한다. 보조 스트림은 자체적으로 데이터 소스에 연결되지 않으며, 항상 다른 스트림을 필요로 한다.
FileInputStream fis = new FileInputStream("input.txt"); // 기반 스트림
BufferedInputStream bis = new BufferedInputStream(fis); // 보조 스트림
기반 스트림 + 보조스트림을 사용해 보자.
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class MyFileInputStream {
public static void main(String[] args) {
// 외부에 있는 파일 데이터를 읽을려면 input
FileInputStream in = null;
BufferedInputStream bin = null;
try {
in = new FileInputStream("a.txt"); // 기반 스트림
bin = new BufferedInputStream(in); // 보조 스트림에 사용 -> 기반 스트림이 필요 하다.
int data;
while ((data = in.read()) != -1) {
System.out.print((char) data);
}
} catch (Exception e) {
// 리소스 자원 정리 -> 반대로 -> 열었던 자원에 순서를 반대로 닫아 주면된다.
if (bin != null) {
try {
bin.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
if (in != null) {
try {
in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
실행 결과______
BufferedInputStream.read()를 호출하여 한 바이트씩 데이터를 읽는다. 이 때, 실제 파일 접근은 버퍼가 비워질 때만 발생하므로 파일 접근 횟수가 줄어들어 성능이 향상된다.
[JAVA] 파일 Copy (바이트기반 입/출력) (0) | 2024.05.17 |
---|---|
[JAVA] 파일 출력 스트림(바이트 기반) (0) | 2024.05.17 |
[JAVA] 표준 입출력 (0) | 2024.05.16 |
[JAVA] Map 인터페이스 (0) | 2024.05.16 |
[JAVA] 프레임워크(collection framework) (0) | 2024.05.16 |