🎁 파일을 읽어올 때에는 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
'Java > 정리' 카테고리의 다른 글
[Java] enum의 정의와 활용 (0) | 2023.08.04 |
---|---|
컴파일? 빌드? 배포? (0) | 2022.10.12 |
[java] tomcat 버전 오류 (0) | 2022.04.05 |
[Java] jsp에서 다운로드 로직 구현 시 주의할 점 (0) | 2022.03.29 |
[Java] 파일 다운로드할 때 파일명 지정하는 방법 (0) | 2022.03.29 |