본문 바로가기
Java/정리

ServletOutputStream

by 콧등치기국수 2022. 6. 24.

🎁  파일을 읽어올 때에는 FileInputStream으로 읽어온 뒤 브라우저에 출력할 때에는 ServletOutputStream을 사용한다.

바이트 기반 출력 스트림의 최상위 클래스인 OutputStream을 상속받아 만들어진 출력 스트림 클래스이다.

Outputstream 뿐만 아니라 ServletOutputStream은 추상클래스이기 때문에 인스턴스를 생성할 수 없다.

 

ServletResponse 클래스에 getOutputStream()이라는 함수를 통해 servletOutputStream 인스턴스를 받아서 사용해야한다.

// resp = HttpServletResponse의 객체
ServletOutputStream sos = resp.getOutputStream();

sos.write(쓰고자하는 데이터의 버퍼);

 

🎁 메소드

write(int b)

 : 매개 변수로 주어진 int 값에서 끝에 있는 1바이트만 출력 스트림으로 보냄.

   매개 변수가 int 타입이지만 4바이트를 모두 보내는 것은 아니다.

OutputStream os = new FileOutputStream("파일 경로");

byte[] data = "가나다".getBytes();

for(int i = 0; i<data.length; i++){
    os.write(data[i]); // "가" , "나" , "다" 를 하나씩 출력합니다.
}

 

write(byte[] b)

 : 매개값으로 주어진 바이트 배열의 모든 바이트를 출력 스트림으로 보냄.

OutputStream os = new FileOutputStream("파일 경로");

byte[] data = "가나다".getBytes();

os.write(data); // "가나다" 한번에 모두 출력합니다.

 

write(byte [] b, int off, int len)

 : b[off] 부터 len 개의 바이트를 출력 스트림으로 보냄.

OutputStream os = new FileOutputStream("파일 경로");

byte[] data = "가나다".getBytes();

os.write(data, 1,2) // "나다"만 출력합니다.

 

 

 

 

출처 및 참고

1. https://pozt1234.tistory.com/29

2. https://choiseonjae.github.io/java/stream/outputstream/

3. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rain483&logNo=220625901561