導航:首頁 > 編程語言 > 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流關閉相關的資料

熱點內容
安卓清楚緩存命令 瀏覽:378
汽車壓縮機電磁離合器損壞怎麼修 瀏覽:505
怎麼提取安卓軟體 瀏覽:593
單片機和主機高速傳文件 瀏覽:476
男生直發加密需要剃光頭嗎 瀏覽:823
qtdesignerlinux 瀏覽:429
命令的幾要素 瀏覽:932
代理伺服器地址怎麼知道 瀏覽:170
漢語命令形 瀏覽:193
ACG官網下載的游戲怎麼解壓 瀏覽:963
stata交叉項命令 瀏覽:470
程序員老公燙頭 瀏覽:692
伺服器文件地址格式 瀏覽:131
securecrtandroid 瀏覽:176
短字元串壓縮 瀏覽:863
u盤插入後顯示加密格式化 瀏覽:944
我的世界怎麼用命令方塊獲得超級武器 瀏覽:382
狗語翻譯器app鏈接怎麼下 瀏覽:905
選擇排序演算法的流程圖 瀏覽:883
如何對文件夾開啟共享 瀏覽:527