BufferedReader
, BufferedWriter
등은 close()를 자동으로 호출해주는 AutoCloseable 인터페이스를 상속하는 객체이다.
다음 예시는 이미 close() 메서드를 호출하고 있는 것이다.
public class AutoCloseTest2 {
public static void main(String[] args) {
// try-with-resources 예시 만들기
Path path = Path.of("src/trycatch/example.txt");
// try-with-resources 예시 만들기
try (
BufferedWriter w = new BufferedWriter(new FileWriter(path.toFile()));
BufferedReader r = new BufferedReader(new FileReader(path.toFile()))) {
w.write("Hello, World! dsg!!!!!!!!");
w.flush();
// 파일 읽기
r.lines().forEach(System.out::println);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public class AutoCloseTest {
public static void main(String[] args) {
BufferedWriter w = null;
BufferedReader r = null;
Path path = Path.of("src/trycatch/example.txt");
try {
// Writing to the file
w = new BufferedWriter(new FileWriter(path.toFile()));
w.write("Hello, World! dsg!!!!!!!!!!!!!!!!!!!!!!!!!");
w.flush();
// Reading from the file
r = new BufferedReader(new FileReader(path.toFile()));
r.lines().forEach(System.out::println);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
// Closing resources in the finally block
try {
if (w != null) {
w.close();
}
if (r != null) {
r.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}