티스토리 뷰
- 바이트 스트림 : 8비트의 바이트 단위로 입출력을 수행하는 스트림
- 파일 입출력을 담당하는 바이트 스트림 : FileInputSream 클래스(파일에서 바이트를 읽음), FileOutputStream 클래스(파일에다가 바이트를 씀)
- 기본적인 메서드: read(), write()
코드 예시)
바이트 기반의 출력 스트림을 활용해서 파일 생성 또는 파일의 데이터를 출력할 수 있다.
코드 예시2)
보조 스트림의 사용
버퍼를 사용하는 것은 입출력 작업에서 매우 중요한 역할을 하며, 그 원리를 이해하는 것은 데이터 처리의 효율성을 높이는 데 큰 도움이 됩니다. 버퍼의 사용 원리는 기본적으로 '일괄 처리' 또는 '집단 처리' 방식에 비유할 수 있습니다.
버퍼의 기본 원리
버퍼는 임시 저장 공간을 말하며, 데이터를 최종 목적지(파일, 네트워크, 디스플레이 등)에 쓰기 전에 일시적으로 데이터를 모아 두는 역할을 합니다.
- 효율성 증가: 작은 데이터 조각들을 바로 전송하거나 저장하는 대신 큰 덩어리로 모아서 한 번에 처리합니다. 이 방식은 특히 입출력 연산이 자주 발생하는 상황에서 유용하며, 시스템의 입출력 호출 횟수를 줄여 전체적인 성능을 향상시킵니다.
- 시스템 부하 감소: 버퍼를 사용하면 데이터를 모아 두었다가 한 번에 처리하기 때문에 자원 사용을 더욱 효율적으로 관리할 수 있습니다. 이는 디스크 접근 횟수를 줄이거나 네트워크 트래픽을 최적화하는 데 도움을 줍니다.
- 데이터 전송 속도 개선: 데이터를 물리적 장치에 기록할 때, 장치의 처리 속도에 따라 기록 속도가 제한될 수 있습니다. 버퍼를 사용하면 데이터 전송 속도가 물리적 장치의 속도보다 빠르게 유지될 수 있으므로, 전체 데이터 전송 시간을 단축시킬 수 있습니다.
버퍼 사용의 단점
버퍼를 사용하는 것은 많은 이점이 있지만, 일부 단점도 있습니다. 예를 들어, 버퍼가 완전히 채워질 때까지 기다려야 하는 경우 실시간 처리에는 적합하지 않을 수 있습니다. 또한, 시스템이 예기치 않게 종료될 경우 버퍼에 저장된 데이터는 손실될 수 있습니다.
파일 copy (바이트 기반 입출력)
코드 예시 1)
기반 스트림
* read( )가 int 타입을 반한한다. => 이유: 입력 스트림의 끝을 표시하는 -1을 인식할 수 있기 때문이다.
코드 예시2)
기반 + 보조 스트림 사용
'Java' 카테고리의 다른 글
Java(파일 입/출력 스트림(문자 기반) 및 정규 표현식) (0) | 2024.05.20 |
---|---|
Java(문자 기반 스트림) (0) | 2024.05.19 |
Java(파일 입력 스트림(바이트 기반)) (0) | 2024.05.19 |
Java(I/O 개론) (0) | 2024.05.19 |
Java(Tread에 wait와 notify(프로듀서와 컨슈머패턴)) (0) | 2024.05.19 |