개발/Java

Java - IO, finnaly문 정리

뉴에이스 2018. 10. 2. 15:44

 

1.7 버전부터 finally - close 부분의 비효율성을 개선
try ~ resource 지원, 자동 닫힘 지원 : try (객체 생성){} 시 try 문을 벗어난 후 자동으로 close 됨
조건 : 사용하는 클래스가 AutoCloseable을 상속해야 한다.
     : IO의 클래스는 전부 AutoClosable을 상속받은 상태임
 

소스

 

class MyClose implements AutoCloseable {
	public void close() throws Exception {
		System.out.println("MyClose 호출 테스트");
	}
}

 

public static void main(String[] args) {
	try (
			MyClose mc = new MyClose(); // AutoCloseable 클래스를 상속받지 않을 경우 오류 발생
			FileReader fr = new FileReader("data/lec13/Test01.java");
			FileWriter fw = new FileWriter("data/lec13/Test01Cp.java");
			) {
		System.out.println("try 블럭 실행함...");

	} catch (Exception e) {
		e.printStackTrace();
	}
	System.out.println("try 블럭 밖...");
}
 

결과

 

try 블럭 실행함...
MyClose 호출 테스트
try 블럭 밖...