728x90
반응형
1. InputStream
- 정의:
- InputStream은 Java에서 바이트 스트림을 읽기 위한 추상 클래스입니다. 주로 파일, 네트워크 소켓, 또는 다른 데이터 소스에서 데이터를 읽는 데 사용됩니다.
- 용도:
- 데이터를 바이트 단위로 읽어오기 위해 사용됩니다.
- 서브클래스인 FileInputStream, ByteArrayInputStream, BufferedInputStream 등을 통해 다양한 소스에서 입력을 처리할 수 있습니다.
InputStream inputStream = new FileInputStream("example.txt");
int data = inputStream.read();
while (data != -1) {
// Process the data
data = inputStream.read();
}
inputStream.close();
2. InputStreamResource
- 정의:
- InputStreamResource는 Spring Framework에서 제공하는 클래스입니다. InputStream의 래퍼 클래스이며, Spring의 Resource 인터페이스를 구현합니다. 이 클래스는 Spring의 다양한 기능과 통합될 수 있도록 설계되었습니다.
- 용도:
- InputStream을 래핑하여 Spring MVC 또는 Spring의 다른 기능(예: 파일 다운로드, HTTP 응답 등)에서 사용할 수 있도록 합니다.
- Spring에서 파일 다운로드나 스트림을 반환하는 컨트롤러 메소드에서 주로 사용됩니다.
import org.springframework.core.io.InputStreamResource;
public ResponseEntity<InputStreamResource> downloadFile() {
InputStream inputStream = new FileInputStream("example.txt");
InputStreamResource resource = new InputStreamResource(inputStream);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"example.txt\"")
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
3. 주요 차이점
특성InputStreamInputStreamResource
정의 | 바이트 단위의 데이터를 읽기 위한 기본 클래스 | InputStream의 래퍼로 Spring에서 사용 |
용도 | 데이터 소스에서 직접 바이트를 읽기 위해 사용 | Spring MVC에서 응답으로 파일 다운로드 또는 스트림을 반환하기 위해 사용 |
의존성 | Java 표준 라이브러리의 일부 | Spring Framework의 일부 |
기능 | 기본적인 입출력 처리 | Spring의 Resource 기능을 활용할 수 있음 |
결론
- InputStream: 파일이나 소스에서 바이트 데이터를 직접 읽고 처리하는 데 사용됩니다.
- InputStreamResource: Spring 프레임워크와 함께 사용되며, InputStream을 래핑하여 더 높은 수준의 추상화를 제공합니다. Spring MVC에서 파일 다운로드와 같은 용도로 사용됩니다.
둘 다 유용한 도구이지만, 사용되는 맥락에 따라 적절한 클래스를 선택하는 것이 중요합니다.
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 제네릭을 사용하는 이유 (1) | 2024.10.06 |
---|---|
[JAVA] Desktop Class (1) | 2024.10.03 |
[JAVA] URLEncoder java.net/ apache 차이 (0) | 2024.10.01 |
[JAVA] 문자열 날짜를 LocalDate로 날짜 차이 구하기 (0) | 2024.09.22 |
[JAVA] DecimalFormat (0) | 2024.09.21 |