FileInputStream을 가지고 있는데, 닫아야하는지 아닌지 궁금합니다. 그렇다면이 스트림 객체를 다른 메서드에 전달하면 해당 하위 메서드에서 닫을 수 있습니까?항상 스트림을 닫아야합니까?
답변
예, 스트림을 전달한 메소드에서 스트림을 닫을 수 있습니다.
하지만주의하십시오. 메서드 호출 후에 같은 스트림을 사용하면 닫히게됩니다.
가장 좋은 방법은 원하는 모든 작업을 완료 한 후 스트림을 닫는 것입니다.
예. 닫아야하며 하위 메서드로 전달하면 닫을 수 있습니다. 리더에 전달하면 Reader에서 close를 호출하면 스트림도 닫힙니다.
OS에서 열려있는 리소스를 확보하려면 항상 스트림을 닫아야합니다. 스트림을 열면 항상 코드에있는 모든 식별자 (식별자가 유효한 경우)를 닫는 데 사용할 수있는 식별자가 다른 메서드 또는 클래스에서 반환되는지 여부가 반환됩니다.
예 - 스트림에 더 이상 기록되지 않을 것이 확실하다면.
아니오 - 예. 서블릿에서 outputStream 사용 - 당신은이 스트림을 가져다 쓸 수 있지만 닫지는 않습니다. 나중에 뭔가가 동일한 스트림에 액세스 할 수 있기 때문입니다. 주요 규칙은 다음과 같습니다. 직접 열어 놓은 스트림을 항상 닫으십시오.
원하는 곳에서 스트림을 닫을 수 있습니다. 그러나 가독성을 높이기 위해 열어 둔 스트림을 닫아야합니다. 당신은 여전히 다른 방법으로 스트림을 처리 할 수 있습니다 : PerformActionOnStream()
에서 스트림을 종료 할 이유가 없습니다
try {
InputStream stream = //open the stream;
PerformActionOnStream(s);
} catch (IOException e) {
//handle error
} finally {
stream.close();
}
. 너가 끝나면 그냥 돌아와. java 7
에서
단순히
try(InputStream stream = new MyStream()) {
// code
} catch (Exception e) {
//
}
비동기적인 경우는 어떻습니까? PerformActionOnStream에서 즉시 반환해야합니까? – user496949
흥미로운 질문입니다. 이 경우 그것은 당신이 달성하기를 원하는 것에 달려 있습니다. 다른 스레드를 사용하여 스트림을 읽으려면 스레드가 파일을 여는 것이 좋습니다. 그럴 가능성이없는 경우 소유권을 스레드로 넘겨주는 주석을 써야합니다. – paztulio
또한 try 블록에서 InputStream을 정의 할 수 없습니다. 마지막으로 사용할 수 없기 때문에 범위에서 볼 수 있습니다. – MeBigFatGuy
- 1. 항상 스트림을 닫아야합니까? .net
- 2. 서블릿 출력 스트림을 닫아야합니까?
- 3. Azure BLOB를 WCF 서비스에서 스트림으로 반환 - 스트림을 닫아야합니까?
- 4. HttpClient 응답 핸들러는 항상 닫힌 스트림을 반환합니다.
- 5. 테스트를 위해 항상 입력 스트림을 차단 하시겠습니까?
- 6. 언제 DatabaseHelper를 닫아야합니까?
- 7. FileInputStream을 닫아야합니까?
- 8. Java PreparedStatement를 언제 닫아야합니까?
- 9. Bitmap.compress()를 사용할 때 FileOutputStream을 더 닫아야합니까?
- 10. 종료하기 전에 파일 설명자를 닫아야합니까?
- 11. Erlang, 여기서 파일을 닫아야합니까?
- 12. 오디오 클립을 닫아야합니까?
- 13. 모든 EntityManager를 닫아야합니까?
- 14. ifstream을 수동으로 닫아야합니까?
- 15. 항상 connection.close를 사용해야합니까?
- 16. 언제 SQL Server에 대한 연결을 열고 닫아야합니까?
- 17. 생성 후 OpenIDE FileObject를 닫아야합니까?
- 18. java.io 패키지의 Reader 데코레이터를 닫아야합니까?
- 19. 어떤 경우에 TCP 연결을 닫아야합니까?
- 20. 데이터 소스에서 가져온 연결을 닫아야합니까?
- 21. 데이터베이스 연결을 얼마나 자주 닫아야합니까?
- 22. ListView에 제공하는 커서를 언제 닫아야합니까?
- 23. JUL 용 추가 FileHandler를 닫아야합니까?
- 24. 파이썬에서 여러 줄 변수/주석을 어떻게 닫아야합니까?
- 25. Booksleeve 연결을 얼마나 자주 열고 닫아야합니까?
- 26. 각 쿼리에 대해 db를 열고 닫아야합니까?
- 27. NetworkStream과 TcpClient 또는 TcpClient를 모두 닫아야합니까?
- 28. Rails App에서 Amazon S3에 대한 연결을 닫아야합니까?
- 29. jdbc 연결 풀에서 가져온 연결을 닫아야합니까?
- 30. 데이터 읽기 후에 ZODB 연결을 닫아야합니까?
예, 스트림을 닫으면를 사용 후 좋은 습관이다하는 것이 좋습니다. –