개발/java
[java] try with resources; close
방푸린
2024. 5. 9. 19:46
반응형
try with resources
- from java7; enhanced in java9
- try 블락 안에 열린 리소스를 예외 여부와 상관없이 자동으로 닫아주는 기법
- stream, db, network.. 등
예시
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// Exception handling
}
: BufferedReader, FileReader 와 같은 리소스의 close함수를 호출하지 않아도 자동으로 닫아줌
어떤 클래스들이 자동으로 닫히나?
AutoClosable interface 혹은 이를 확장한 AutoCloaseable interface를 구현한 리소스
public interface AutoCloseable {
void close() throws Exception;
}
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
이를 구현한 예시로는
- 스트림: FileInputStream, FileOutputStream, BufferedReader, BufferedWriter
- reader/writer: InputStreamReader, OutputStreamWriter
- sql connection: java.sql.Connection, java.sql.ResultSet, java.sql.Statement
- 소켓: java.net.Socket
- 채널: java.nio.channels > FileChannel, SocketChannel, ServerSocketChannel
- zip: java.util.zip.ZipFile
728x90
반응형