當前位置:首頁 » 編程語言 » java流關閉

java流關閉

發布時間: 2022-06-20 19:03:10

java中為什麼先關閉輸出流後關閉輸入流

不絕對,要看依賴關系,先關被依賴的流,誰是被依賴的,就先關誰,比如代碼中從文件A讀出內容,然後寫入文件B , 這個時候讀A 要用輸入流 ,往B寫要用輸出流,必須要先從A讀出,然後才能往B寫,所以,這個場景下,輸出流 依賴 輸入流,操作完關流的時候就要先關被依賴的輸入流,再關輸出流。
還有,如果關流操作在finally塊中進行,順序就無所謂了。
如果輸入流和輸出流完全沒有依賴關系,那關流順序就更沒關系了,看心情就好。

❷ 大佬們,關於java IO流關閉的一點疑問,求大佬們幫幫忙

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

❸ java 是什麼控制流的打開和關閉的

您好,提問者:
io:reader、writer和outpustream、inputstream需要打開和關閉。
再就是資料庫connection等都需要及時關閉。

❹ Java中,static代碼塊創建的IO流需要手動關閉嗎

IO 流除了可以手動關閉外,在垃圾回收這個對象的時候也會自動關閉。
但系統進行垃圾回收的時機是不確定的,static 代碼塊執行完後,不會馬上進行回收。在這段時間內,會造成無用的內存及IO等其他資源佔用。所以最好還是用完即關。
推薦寫在 try 里,try 塊執行完自動關閉。

❺ 為什麼在java中打開流後一定要關閉流好像關不關沒有不同,程序的結果都是一樣的。。。

這跟資源的佔用有關
比如你將一個100MB的word文檔轉換成流,然後進行分析存儲到資料庫一樣
它是將這100MB的東西讀到內存,然後進行處理,如果你在使用的時候不關閉
那麼java就認為你是一直在使用
而不進行垃圾回收
那麼就占你100MB的內存
這樣有可能導致內存溢出

❻ 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 關閉流的作用

關閉流主要是為了釋放資源,雖然java有自動回收垃圾資源的功能,但是如果不關閉流,可能(只是可能)會影響自動回收的效果,造成內存大量佔用。另外一個重要的原因,如果不關閉流,可能會被其他的語句訪問該數據流,造成數據錯誤。

❾ java關閉流的順序影響程序結果

bw是緩沖流,使用bw.write 後,數據並沒有直接寫入txt文件中,而是在bw的緩沖區內,所以這時先關閉輸出流fw,則txt中就是空的了,如果先關閉bw,則緩沖流會在內部先調用bw.flush();將緩沖區的內容輸出到文件中,所以txt才有內容。要解決這個問題,需要在bw.write 後顯示調用bw.flush();這樣先關閉那個流都一樣了

❿ 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

熱點內容
h6二代有哪些隱藏配置 發布:2025-02-06 04:11:09 瀏覽:604
c語言中的void是什麼意思 發布:2025-02-06 04:05:26 瀏覽:233
加密狗是啥 發布:2025-02-06 03:48:03 瀏覽:552
phpcopy文件 發布:2025-02-06 03:41:26 瀏覽:410
系統配置頁面怎麼設置 發布:2025-02-06 03:36:34 瀏覽:693
家庭電腦搭建流媒體伺服器 發布:2025-02-06 03:19:02 瀏覽:342
matlab稀疏矩陣存儲 發布:2025-02-06 03:07:54 瀏覽:838
國際服2b2t伺服器地址 發布:2025-02-06 03:06:28 瀏覽:390
c語言輸出b 發布:2025-02-06 03:06:27 瀏覽:31
普通火車wifi密碼多少 發布:2025-02-06 03:04:20 瀏覽:436