| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 프론트엔드
- BACK-END
- jpa
- java
- oracle
- 프로그래머스
- SQL
- jsp
- JavaScript
- web
- 코드테스트
- 데이터베이스
- Next.js
- 서버
- node.js
- 디자인 패턴
- 쿼리
- 프런트엔드
- 자바스크립트
- 자바
- 백엔드
- 오라클
- 정리
- 스프링
- 알고리즘
- MySQL
- 미니정리
- 스프링부트
- spring
- 코드 테스트
- Today
- Total
참치코더의 꿈 메모장
바이트기반의 보조스트림 - java /2021/09/08 본문
FilterInputStream과 FilterOutputStream
FilterInputStream/FilterOutputStream은 InputSteam/OutputStream의 자손이면서
모든 보조스트림의 조상이다.
보조스트림은 자체적으로 입출력을 수행할 수 없기 때문에 기반스트림을 필요로 한다.
protected FilterInputStream(InputStream in)
public FilterOutputStream(OutputStream out)
생성자 FilterInputStream(InputStream in)는 접근 제어자가 protected이기 때문에 Filter InputStream의
인스턴스를 생성해서 사용할 수 없고 상속을 통해서 오버라이딩 되어야 한다.
BufferedInputStream과 BufferedOutputStream
BufferedInputStream과 BufferedOutputStream은 스트림의 입출력 효율을 높이기 위해
버퍼를 사용하는 보조스트림이다.
한바이트씩 입출력하는 것 보다는 버퍼를 이용해서 한 번에 여러 바이트를 입출력하는 것이 빠르기 때문에
대부분의 입출력 작업에 사용된다.
| BufferedInputStream(InputStream in, int size) | 주어진 InputStream인스턴스를 입력소스로 하며 지정된 크기(byte단위)의 버퍼를 갖는 BufferedInput Stream 인스턴스를 생성한다 |
| BufferedInputStream(InputStream in) | 주어진 InputStream인스턴스를 입력소스로 하며 버퍼의 크기를 지정해 주지 않으므로 기본적으로 8192byte 크기의 버퍼를 갖게 된다. |
BufferedInputStream의 버퍼크기는 입력소스로 부터 한 번에 가져올 수 있는 데이터의 크기로 지정하면 좋다.
* 보통 입력소스가 파일인 경우 4096 정도의 크기로 하는 것이 보통이며, 버퍼의 크기를 변경해가면서
테스트하면 최적의 버퍼크기를 알아낼 수 있다.
* 외부의 입력소스로 부터 읽는 것보다 내부의 버퍼로 부터 읽는 것이 훨씬 빠르기 때문에
그만큼 작업 효율이 높아진다.
| BufferedOutputStream(OutputStream out, int size) | 주어진 OutputStream인스턴스를 출력소스로 하며 지정된 크기의 버퍼를 갖는 BufferedOutputStream 인스턴스를 생성한다. |
| BufferedOutputStream(OutputStream out) | 주어진 OutputStream인스턴스를 출력소스로 하며 버퍼의 크기를 지정해주지 않으므로 기본적으로 8192 byte 크기의 버퍼를 갖게 된다 |
| flush( ) | 버퍼의 모든 내용을 출력소스에 출력한 다음, 버퍼를 비운다. |
| close( ) | flush( )를 호출해서 버퍼의 모든 내용을 출력소스에 출력하고, BufferedOutputStream인스턴스가 사용하던 모든 자원을 반환한다. |
* 프로그램에서 모든 출력작업을 마친 후 BufferedOutputStream에 close( )나 flush( )를 호출해서
마지막 버퍼에 있는 모든 내용이 출력소스에 출력되도록 해야 한다.
'JAVA' 카테고리의 다른 글
| 자바 중첩 클래스 개념 요약 (0) | 2025.04.27 |
|---|---|
| 2021-09-18 InetAddress, URL, URLConnection - 네트워크 (0) | 2021.09.18 |
| Java - 바이트기반 스트림 2021/09/06 (0) | 2021.09.06 |
| 메타 애너테이션(Annotation) - Java - 2021/08/31 (0) | 2021.08.31 |
| 표준 애너테이션(Annotation) - Java - 2021/08/30 (0) | 2021.08.30 |