1. 程式人生 > >java.io.IOException: Stream closed解決辦法

java.io.IOException: Stream closed解決辦法

/**
     * @author Keyty
     * @功能:將檔案儲存回原來的檔案目錄
     */
    public void saveFile() 
    {
        File file =this.getCurFileName();
        //準備寫入到指定檔案即可
        FileWriter fw =null;
        BufferedWriter bw =null;

        try
        {
            fw=new FileWriter(file);
            bw=new BufferedWriter(fw);
            //獲取jta文字,並用\n分隔符分割文字
String[] s =this.jta.getText().split("\n"); for (int i = 0; i < s.length; i++) { bw.write(s[i]); bw.flush(); bw.newLine(); } } catch (Exception e) { e.printStackTrace( ); // TODO: handle exception
} finally { try { //這裡關閉流要從大到小關閉 //fw.close(); //bw.close(); //這樣的順序就是不行,fw流自己關閉了。然後bw流又把 //fw流關閉一次就會說java.io.IOException: Stream closed bw.close(); fw.close(); } catch
(IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

報錯說如下
那麼是因為一個流關閉了但是你有試著使用它就會報這個異常
比如上面例子

bw.close();
fw.close();

bw流使用了fw流,所以關閉bw流也會關閉fw流;
但是下面有使用fw流,相當於使用一個關閉了的流。解決辦法是換下位置就好


fw.close();
bw.close();