InputStream 링크 : lannstark.tistory.com/34
OutputStream의 정의
OutputStream 추상 클래스는 데이터가 나가는 통로의 역할에 관해 규정하고 있는 추상 클래스이다.
InputStream을 한 번 봤기 때문에 쉽게 이해할 수 있다.. 반대되는 개념이겠거니...
OutputStream 주요 메소드
그럼 이제 데이터가 나가는 통로는 어떤 역할을 수행해야 하는지 주요 메소드를 알아보자!
OuputStream은 쓸 수 있어야 한다
파일로 보내건, 메모리로 보내건, 네트워크로 보내건 통로로 데이터를 내부내는 기능이 필요하다!
데이터를 쓰는 기능과 관련된 메소드는 3개가 있다.
/**
* b를 OutputStream으로 내보낸다
*/
public abstract void write(int b) throws IOException;
// Main method : ByteArrayOutputStream은 Byte Array'로' 내보내는 통로이다
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(1); // outpustream에는 [1]이 들어있다
outputStream.write(2000); // outputStream에는 [1, -48]이 들어있다
/**
* byte 배열 b를 OutputStream으로 내보낸다
*/
public void write(byte b[]) throws IOException;
// Main method
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(new byte[]{1, 2}); // outpustream에는 [1, 2]이 들어있다
/**
* byte 배열 b를 off부터 len만큼 OutputStream으로 내보낸다
*/
public void write(byte b[], int off, int len) throws IOException;
OutputStream은 버퍼를 비울 수 있다
/**
* 버퍼가 존재하는 경우, 해당 버퍼에서 데이터를 모두 목적지로 보내는 역할을 수행한다
* ByteArrayOutputStream의 경우 버퍼가 없어 아무런 영향이 없다
*/
public void flush() throws IOException { }
OutputStream은 닫을 수 있다
통로를 부실 수 있는 것이다
public void close() throws IOException;
정리하면
OutputStream이 InputStream보다 훨씬 간단하네요 ㅎㅎㅎ
OutputStream이 갖춰야 할 덕목으로는
- 데이터 쓰기
- 버퍼 비우기
- 통로 끊기
가 있다! (물론 하위 구현체마다 지원하지 않는 덕목이 있을 수 있다)
끝!
'개발 공부 기록하기 > 01. JAVA & Kotlin' 카테고리의 다른 글
짧은 코멘트와 함께하는 이펙티브 자바) #3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2020.09.18 |
---|---|
짧은 코멘트와 함께하는 이펙티브 자바) #2 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2020.09.17 |
짧은 코멘트와 함께하는 이펙티브 자바) #1 생성자 대신 정적 팩토리 메소드를 고려하라 (0) | 2020.09.16 |
Junit5 Parameterized Test 가이드 (0) | 2020.09.02 |
Java InputStream이란? (7) | 2020.08.21 |