java7自動資源管理

在java7以前的版本中,我們知道比如文件流的創建和關閉都是要自己手動管理的,在java7中,該對象已經可以交給虛擬機自己管理了,java7提供的新接口java.lang.AutoCloseable以及java.io.Closeable來對資源的自動管理的支持。比如,在java7之前,我們對文件的複製是這麼寫的:

InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(src);
} catch (FileNotFoundException fne) {
return;
}
try {
out = new FileOutputStream(dst);
try {
byte[] buf = new byte[8192];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} catch (IOException ioe) {
//Do something
} finally {
try {
out.flush();
out.close();
} catch (IOException ioe) { }
}
} catch (FileNoutFoundException fne) {
} finally {
try {
in.close();
} catch (IOException ioe) { }
}

如上所示,我們不得不寫大量的代碼來關閉文件流,但是在java7或者之後,我們可以這樣子寫:

try (InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(ds)) {
byte[] buf = new byte[8192];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
}

沒錯,你已經不需要關心文件流是否已經關閉,java7在try語句時創建了資源的對象,當執行try catch之後,創建的對象會自動關閉,你不再需要在finally寫代碼來關閉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章