해결된 질문
작성
·
523
0
안녕하세요
InputStream 자원을 닫지 않을시에 정상적으로 파일 업로드가 안되는 현상에 대해 도움 드립니다.
두가지 방법이 있는데요.
InputStream 자원을 다 쓰고 회수하기
첫번째 for문 마지막에 inputStream.close
로 다 쓴 자원을 닫아줍니다.
Try With resources문 사용
inputStream을 선언할 시 try (InputStream inputStream = part.getInputStream()) {
...
} catch (IOExcetpion e) {
...
}
Try With resources문은 Java7 부터 지원하는 문법으로
자원을 자동으로 반납해주는 문법입니다.
자원을 실수없이 모두 반납할 수 있는 장점이 있습니다.
try문 안에서 자원을 사용하시고,
.close 같은 메소드를 생략해도 됩니다.
혹여나 이 수업에서 막히시는 분들을 위해 공유드려요
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
파일 업로드가 제대로 안되는 현상은 주로 InputStream 자원을 제대로 닫지 않아서 발생할 수 있어요. InputStream을 다 사용한 후에는 항상 close() 메소드를 호출하여 자원을 닫아줘야 해요.
가장 기본적인 방법은 for문의 마지막에 inputStream.close()를 호출하여 자원을 닫아주는 것이에요. 이렇게 하면 사용한 자원을 명시적으로 닫아줄 수 있지만, 실수로 닫는 것을 놓치는 경우가 있을 수 있어요.
더 좋은 방법은 Java 7부터 지원하는 Try-with-resources 문법을 사용하는 것이에요. Try-with-resources 문법을 사용하면 InputStream을 선언할 때 try 문 안에 넣어주고, try 블록을 빠져나오면 자동으로 자원이 반납되어 안전하게 처리됩니다. 아래는 Try-with-resources 문법의 예시입니다.
try (InputStream inputStream = part.getInputStream()) {
// 파일 처리 로직
} catch (IOException e) {
// 예외 처리 로직
}
이렇게 사용하면 자원을 실수 없이 모두 반납할 수 있고, close 같은 메소드를 생략할 수 있어서 코드가 간결해집니다. 수업에서 이 부분이 막히시는 분들을 위해 공유드렸습니다.
추가적인 질문이 있으면 언제든지 물어보세요. 도움이 될 수 있도록 최대한 도와드리겠습니다. 감사합니다.