Stream
- 입출력 장치에서 데이터를 읽고 쓰기 위해 자바에서 제공하고 있는 클래스
- 단방향으로 흐르기 때문에 입출력을 동시에 진행하기 위해서는 2개의 스트림(입력, 출력)이 필요
java.io.InputStream
- Java에서 데이터의 타입과 상관없이 입력 스트림을 다루는 데(데이터 읽음) 사용되는 클래스 → 모든 데이터(이미지, 동영상 포함)를 바이트 단위로 처리
하위 클래스
- FileInputStream = 파일에서 바이트 단위로 데이터를 읽어오는데 사용
- ByteArrayInputStream = 바이트 배열에서 바이트 단위로 데이터를 읽어오는데 사용
- BufferedInputStream = 입력 스트림에 버퍼링 기능 추가
- PipedInputStream = 파이프로부터 바이트 단위로 데이터를 읽어오는데 사용 (스레드 간 데이터 교환)
- DataInputStream = 기본 자료형 데이터를 읽을 수 있는 메소드를 제공
- ObjectInputStream = 객체 데이터를 읽을 수 있는 클래스로, 직렬화된 객체를 역직렬화할 때 사용
주요 메소드
- read() = 데이터(바이트) 읽기 (아스키코드값(int)으로 반환 - 문자로 표현하려면 char로 형변환 필요)
- skip(Long n) = n 바이트를 건너 뛰고 읽기
- mark() = 입력 스트림에서의 현재 위치 마킹
- markSupported() = 입력 스트림에서 마킹한 부분이 있는지 여부
- reset() = 마지막으로 mark()를 호출한 부분으로 이동
- available() = 읽을 수 있는 바이트 수 반환
- close() = 입력 스트림 닫기
java.io.OutputStream
- Java에서 데이터의 타입과 상관없이 출력 스트림을 다루는 데(데이터 작성) 사용되는 클래스
하위 클래스
- FileOutputStream = 파일에 데이터를 쓰기위해 사용
- ByteArrayOutputStream = 바이트 배열에 데이터를 쓰기위해 사용
- BufferedOutputStream = 출력 스트림에 버퍼링 기능 추가
- PipedOutputStream = 파이프에 데이터를 쓰기위해 사용
- DataOutputStream = 기본 데이터 타입을 이진 형식으로 출력
- ObjectOutputStream = 객체를 직렬화하여 출력
주요 메소드
- write() = 출력 스트림에 데이터 작성(담기) - 파라미터의 데이터 타입 = byte[], int
- flush() = 버퍼 비우기 (버퍼에 남아있는 데이터를 출력 대상에 강제로 전송)
- close() = 출력 스트림 닫기
※ close()는 내부적으로 flush()를 호출하지만 스트림에 에러가 발생하여 종료되더라도 버퍼에 데이터가 남을 수 있기 때문에 close() 이전에 flush()를 선행하는 것이 바람직함
'Java' 카테고리의 다른 글
java.net.URL (0) | 2023.12.20 |
---|---|
java.io.File (0) | 2023.12.20 |
java.io.Reader & Writer (0) | 2023.12.20 |
java.util.Properties (0) | 2023.12.19 |
BufferedReader/BufferedWriter (0) | 2023.12.19 |
댓글