導航:首頁 > 編程語言 > javaio流關閉

javaio流關閉

發布時間:2022-05-18 21:45:20

java socket中關閉IO流後,發生什麼事

為了方便講解,我們把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做為Socket輸出流的代言。同 樣的,din是輸入流的代言。
可以造成dout被關閉的操作有:
1、調用dout.close();或din.close();因為使用這種流關閉,會造成socket被關閉,所以輸入輸出流都將不可再用。
2、調用socket.close();
3、調用socket.shutdownOutputStream();單方面關閉dout,此時din還可正常使用。

以下,我將對socket中關閉輸出流進行3個測試:
輸出流關閉測試一:socket關閉嗎?
輸出流關閉測試二:該流是否可以重新開啟?
輸出流關閉測試三:輸出緩沖區里的數據是丟棄,還是發送?
測試結果如下:
測試一:dout.close();會造成socket被關閉,但socket.shutdownOutputStream()不會。
測試二:不可以,會拋出異常!
測試三:丟棄

轉載

② java io流的關閉問題。

你BufferedReader是通過fileReader來的,相當於你關閉br後就直接關閉了FileReader,最後建議你把br=null;

和這個相反你可以參考一下rs和con的關系

③ 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 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流關閉的一點疑問,求大佬們幫幫忙

如果上面沒有對流進行手動關閉的話,finally方法中的fis一定不為空

⑥ java關閉IO流的時候Socket也同時關閉

樓主解決了么,我想到一個辦法:
服務端:就是每次接收到一個客戶端請求以後,都重新啟動一個線程用於邏輯處理,處理完畢後關閉該線程會自動關閉。
客戶端:每次發送/接收數據都新建一個socket ,發送完/傳輸完就關閉當前socket

⑦ java中IO流關閉時的疑惑

importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;

/*
*加入異常處理的位元組輸出流操作
*/
{
publicstaticvoidmain(String[]args){
//分開做異常處理
//FileOutputStreamfos=null;
//try{
//fos=newFileOutputStream("fos4.txt");
//}catch(FileNotFoundExceptione){
//e.printStackTrace();
//}
//
//try{
//fos.write("java".getBytes());
//}catch(IOExceptione){
//e.printStackTrace();
//}
//
//try{
//fos.close();
//}catch(IOExceptione){
//e.printStackTrace();
//}

//一起做異常處理
//try{
//FileOutputStreamfos=newFileOutputStream("fos4.txt");
//fos.write("java".getBytes());
//fos.close();
//}catch(FileNotFoundExceptione){
//e.printStackTrace();
//}catch(IOExceptione){
//e.printStackTrace();
//}

//改進版
//為了在finally裡面能夠看到該對象就必須定義到外面,為了訪問不出問題,還必須給初始化值
FileOutputStreamfos=null;
try{
//fos=newFileOutputStream("z:\fos4.txt");
fos=newFileOutputStream("fos4.txt");
fos.write("java".getBytes());
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
//如果fos不是null,才需要close()
if(fos!=null){
//為了保證close()一定會執行,就放到這里了
try{
fos.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}

⑧ Java中怎麼判斷一個io流是否已經關閉

try{
inputstream.read();
Syste.out.println("流未關閉");
}cache(Exceptione){
Syste.out.println("流已關閉");
}

⑨ Java中的io流關閉問題

如下例子代碼:
FileInputStream is = new FileInputStream(".");
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();

從設計模式上看:
java.io.BufferedInputStream是java.io.InputStream的裝飾類。
BufferedInputStream裝飾一個 InputStream 使之具有緩沖功能,is要關閉只需要調用最終被裝飾出的對象的 close()方法即可,因為它最終會調用真正數據源對象的 close()方法。

BufferedInputStream的close方法中對InputStream進行了關閉,下面是jdk中附帶的源代碼:
java.io.BufferedInputStream的api:
close
public void close()throws IOException 關閉此輸入流並釋放與該流關聯的所有系統資源。

因此,可以只調用外層流的close方法關閉其裝飾的內層流,驗證例子:

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("java IO close test");

bw.close();

}

驗證ok

閱讀全文

與javaio流關閉相關的資料

熱點內容
二次元表格編程 瀏覽:20
plc編程器保停 瀏覽:963
如何降低伺服器的內存佔用率 瀏覽:868
阿里雲伺服器是個什麼意思 瀏覽:817
國內最好的數控編程培訓學校 瀏覽:13
222乘104列是演算法 瀏覽:159
程序員溝通正確姿勢 瀏覽:969
魔玩app怎麼視頻推廣 瀏覽:960
程序員抽獎送禮 瀏覽:458
北京java程序員薪資 瀏覽:658
如何創建網路平台或者app 瀏覽:355
python隨機數生成控制概率 瀏覽:236
壓縮機並聯運行 瀏覽:899
兩位單片機 瀏覽:63
四川音樂類投檔線的演算法 瀏覽:650
建行app如何改轉賬卡 瀏覽:26
android開發升級 瀏覽:299
要火社區app進不去怎麼辦 瀏覽:826
安卓手機上的自定義功能怎麼用 瀏覽:230
方舟伺服器怎麼購買進去資格 瀏覽:44