[Close()]
=> Java 코드가 메모리에 생성한 것이 아닌 것과
작성을 할 때는 사용이 끝나면 사용이 종료 되었다는 것을알려주어야합니다.
=> 이때 사용되는 메소드 이름은 대부분 close, disconnect, release(자원에 대한 해제, 이거 다썼다 )
어떤 문제가 생기는가 ?
이 이유로 인해서 대부분의 코드가 아래처럼 작성됩니다.
자원을 사용하는 클래스에 변수를 만들고 null을 대입합니다.
try를 만들어서 안에서 자원을 사용
try안에서 클로즈를 할 수 없는 이유는
클로즈를 하기전에 문제가 발생하면 클로즈를 못함
그렇기에 finally를 만들어서 finally에서 자원을 해제 합니다.
클래스 s = null;
try{
}catch(Exception e ) {
System.out.println("예외" + e.getMessage());
}finally {
try {
if (ois != null) {
// 종료
s.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
**AutoCloseable 인터페이스
- java 1.7 에서부터 사용됨
=> 일정시간동안 사용하지 않으면, 자동으로 Close 해주는 메소드를 소유한 인터페이스
이 인터페이스가 implements 클래스는 close()하지 않아도 자동으로 연결해제 됩니다.
[사용방법]
**try ~ with ~ Resourece
//괄호 안에서 생성한 객체는 예외가 발생하지 않으면 try 끝에서 close()를 호출하고
//예외가 발생하면, 즉시 close()를 부릅니다.
try(객체생성 ){
}
catch( ) { }
버퍼가 출력되지 못한 상태에서 프로그램이 종료되버리면, 끝까지 데이터가 출력되지 못할 수 도 있다.
그러므로 Close() 호출해주어서 버퍼에 남아있던 모든 내용이 출력되도록해주어야한다.
'Java > 자바 공부' 카테고리의 다른 글
버퍼사용시 주의사항 && (0) | 2018.01.17 |
---|---|
버퍼란 무엇인가? <출처 : 위키백과> (0) | 2018.01.17 |
0)Stream에 대한 정의 (0) | 2018.01.17 |
1-4) ChractorStream의 Writed와 Read (0) | 2018.01.17 |
split이용한 배열의 마지막 값을 가져오는 방법 (0) | 2018.01.17 |