JDK在1.7之後出現了自動關閉類的功能,該功能的出現為各種關閉資源提供了相當大的幫助,這裡我們談一談自動關閉類。 JDK1.7之後出現了一個重要的接口,以及改造了一個重要的方法結構: 1、AutoCloseable自動關閉接口 2、try(){}--catch{}--finally{} 相應的 一些資源也實作了該接口,如preparedStatement、Connection、InputStream、outputStream等等資源接口。
接口的實作類要重寫close()方法,将要關閉的資源定義在try()中,這樣當程式執行完畢之後,資源将會自動關閉。自定義類如果要進行自動關閉,隻需要實作AutoCloseable接口重寫close()方法即可, 同時也隻有實作了AutoCloseable接口才能将,自定義類放入到try()塊中,否則編譯不能通過,舉例說明 代碼如下:
<pre name="code" class="java">class ReadTxt extends AutoClassable {
@Override
public void close() throws Exception {
System.out.println("ReadTxt close");
}
public String readTextValue(String path){
StringBuffer sb = new StringBuffer();
try(BufferedReader br = new BufferedReader(new FileReader(path))){
int line;
while((line = br.read())!=-1){
sb.append(br.readLine()+"\n")
}
}
return sb.toString();
}
}
class MainTest {
public static void main(String[] args) {
try (ReadTxt rt = new ReadTxt()) {
String line = rt.readTextValue("G:\\學習文檔\\test.txt");
System.out.println(line);
}
}
}