導航:首頁 > 編程語言 > java關閉流的順序

java關閉流的順序

發布時間:2023-07-23 18:43:39

java直接return的文件流如何關閉

代碼如下:

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;

publicclassApp{

publicstaticvoidmain(String[]args)throwsIOException{

//第一種方式,稍嫌麻煩

FileOutputStreamoutputStream=null;

try{

outputStream=newFileOutputStream(newFile("data.txt"));

outputStream.write(newbyte[]{0x11,0x22,0x33,0x44});

//在這里可以直接return,會調用finally中的代碼

}finally{
if(outputStream!=null){
try{
outputStream.close();
}catch(IOExceptione){
}
}
}

//第二種方式,比較簡潔,不用顯式調用close(),會自動調用close();

try(FileInputStreaminputStream=newFileInputStream(newFile("data.dat"))){

byte[]buf=newbyte[4];
inputStream.read(buf);

//可以在這里調用return,在這個{}代碼塊結束時,close會自動執行,
}
}
}

⑵ Java IO流中先關閉輸出流還是先關閉輸入流為什麼

java中需要手動釋放的資源常見的有以下兩個:

  1. 流相關資源

    流相關資源一般遵循:

    1)先開後關,先開的輸入流,再開的輸出流,通過讀取輸入流寫入輸出流中,那麼應該先關輸出流,再關輸入流,但是一般關閉輸入輸出流操作都是在讀寫完成後的finally中執行的,所以即使先關輸入流,再關輸出流也不會任何問題,因為讀寫操作沒有進行了。

    2)先關外層,再關內層。如BufferedInputStream包裝了一個FileInputStream,那麼先

    關BufferedInputStream,再關FileInputStream。但要注意的是由於一般處理流持有節點流引用,處理流都會在自己的close方法中去關閉節點流,因此我們只要關閉外層的處理流即可,如果多此一舉的關閉節點流反而會報錯。如BufferedInputStream包裝了FileInputStream,我們只要關閉BufferedInputStream即可

    3)只關處理流,不關節點流,原因見上述第二條

    流相關文章參考:http://blog.csdn.net/u012250875/article/details/78341874

  2. jdbc相關資源

    Connection,PrepareStatement,ResultSet三個資源。這三個資源的獲取順序是:

    先獲得一個jdbc連接對象Connection,再通過連接對象獲得一個sql預處理對象PrepareStatement,如果是查詢的話最後還會通過PrepareStatement對象獲取一個結果集ResultSet對象,關閉順序與獲取順序正好相反。先關ResultSet,再關PrepareStatement,最後關Connection。

⑶ java中IO流操作怎樣關閉流

如果 in == null,就說明 in這個引用所指向的對象還沒有被創建,自然 in.close()也就不可能被執行,而且會報異常。我是這樣想的,程序中 如果你先聲明變數
InputStream(或者其他流類型) in = null;
然後執行其他語句,再 in = new 、、、、
在in new之前其他語句出exception,這時流沒有被打開,也就無需關閉,如果不判斷if(null != in) 硬要關閉in就出exception

另外你的代碼按如下寫會更合理:

if(null != in){
try{
in.flush();
in.close();
in = null;
}
catch(IOExection e){};
}

閱讀全文

與java關閉流的順序相關的資料

熱點內容
和家親這個app有什麼用 瀏覽:573
什麼app裡面有種樹打折 瀏覽:372
編程外掛入門教學 瀏覽:972
pdf黑白轉彩色 瀏覽:723
英國投資加密貨幣嗎 瀏覽:885
看完程序員那麼可愛後的感受 瀏覽:131
廣播在什麼APP能聽 瀏覽:678
阿克曼小車連接什麼app 瀏覽:773
all100編程器 瀏覽:182
加密的內存卡能用嗎 瀏覽:923
linux在線環境 瀏覽:404
java保留兩位小數四捨五入 瀏覽:106
安卓手機怎麼設置中間頁面 瀏覽:387
文檔自動壓縮圖片了怎麼辦 瀏覽:236
和平精英如何換伺服器名稱 瀏覽:517
外國的雲伺服器有沒有中文的 瀏覽:545
top853編程器 瀏覽:966
家用wlfi怎樣加密 瀏覽:675
二手漢鍾螺桿壓縮機 瀏覽:395
力控編程變數可以用中文嗎 瀏覽:962