Purple Bobblehead Bunny

Backend/JAVA

[JAVA] 바이트기반 Stream

준영어린이 2022. 2. 24. 16:38

 

바이트 기반 스트림

 

1byte씩 읽어서 1byte씩 출력한다. InputStream과 OutputStream이 모든 바이트기반 스트림들의

조상이 되고, InputStream을 상속받는 스트림은 read() 추상 메서드를 구현,

OutputStream을 상속받는 스트림은 write() 추상 메서드를 구현한다.

 

바이트기반 스트림은 클래스의 이름이 InputStream, OutputStream으로 끝나며 데이터를 

읽거나 출력할 대상에 따라서 적절한 스트림을 사용한다.

스트림을 사용하기 위해서는 인스턴스를 생성할 떄, 인자로 데이터를 입력받거나 

출력 받을 곳을 넘겨준 다음 적절한 메서드를 사용한다.

 

FileInputStream fis = null;

fis = new FileInputStream("읽어올 파일의 위치");

fis.read();

 

 

바이트기반 보조 스트림

 

보조 스트림은 실제 입력 스트림을 도와서 성능을 향상시키는 역할을 한다.

속도를 향삭 시키는 방법 중 하나로 Buffer를 사용하는 방법이 있다.

Buffer는 데이터가 쌓이기를 기다렸다가 꽉차게 되면 한번에 읽는 방식으로 입력 횟수를 줄여준다.

 

데이터를 전송 할 스트림을 선언 후, 그 스트림을 인자로 보조 스트림의 생성자에 넣어준다

 

FileInputStream fis = null;

fis = new FileInputStream("파일 위치");

BufferedInputStream bis = new BufferedStream(fis);

 

모든 보조 스트림은 다른 스트림들과 마찬가지로 InputStream, OutStream의 자손으로

입출력 방법이 같으므로, 보조 스트림의 참조변수로 입출력한다.

 

BufferedOutputStream : byte단위로 파일을 기록할 때 사용하는 버퍼 스트림

 

BufferedInputStream : byte 단위로 파일을 읽어 올 때 사용하는 버퍼 스트림

 

 

 

Buffered는 파일을 기록 할 때, 8192byte의 buffer를 두고 작업을 하기에,

속도가 굉장히 빨라진다. 파일을 주로 다루는 프로그램을 만들 때 필수.

 

BufferedOutputStream과 BufferedWriter는 전송한 데이터를 내부 버퍼에 쌓아뒀다가, 버퍼가 꽉 차면버퍼의 모든 데이터를 한꺼번에 보낸다. 직접 데이터를 보내는 것이 아닌, 메모리 버퍼로 데이터를 고속 전송하기 때문에,실행 성능이 향상됨.

 

 

FileOutputStream fos = new FileOutputStream("C:\\file.txt);

BufferedOutputStream fis = new BufferedOutputStrea(fos);

String str = "AAAA";

bos.write(str.getByte());

bos.close();

bis.close();

 

 

BufferedInputStream

 

 

 

실전 예제

 

'Backend > JAVA' 카테고리의 다른 글

[JAVA] String 클래스  (0) 2022.03.02
[JAVA] 예외 처리 Exception  (0) 2022.03.02
[JAVA] 문자기반 Stream  (0) 2022.02.24
[JAVA] Stream으로 파일 불러오기,복사,저장  (0) 2022.02.24
[JAVA] IO와 Stream  (0) 2022.02.24