2014-12-05 84 views
0

的生成y.txt只包含一號線爲什麼2號線是abcent爲什麼文件只包含1號線

public class Writer{  

    public static void main(String[] args) { 
     try { 
      FileWriter fw = new FileWriter(new File("y.txt")); 
      PrintWriter pw1 = new PrintWriter(fw); 
      pw1.println ("line1 "); 
      pw1.close(); 
      PrintWriter pw2 = new PrintWriter(fw); 
      pw2.println("line2 "); 
      pw2.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+2

我很確定'pw1.close()'調用'fw.close()'。 – Compass 2014-12-05 18:28:38

+0

你ü正確 我搬pw1.close()下來它工作 謝謝 – DeepBlue0003 2014-12-05 18:30:53

回答

0

一旦關閉的PrintWriter,該文件被關閉。

Javadocs for PrintWriter.close() state:「關閉流並釋放與之關聯的所有系統資源。關閉以前關閉的流無效。」

+0

謝謝,這有助於 – DeepBlue0003 2014-12-05 18:33:57

0

你不需要兩個PrintWriters,這是不必要的。你應該只使用一個PrintWriter的整個文件

public static void main(String[] args) { 
try { 
    FileWriter fw = new FileWriter(new File("y.txt")); 
    PrintWriter pw1 = new PrintWriter(fw); 

    pw1.println ("line1 "); 
    pw1.println("line2 "); 

    pw1.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

希望這有助於

0

在文檔尋找close,我們可以看到,調用close

關閉該流並釋放任何與之相關的系統資源

這包括您的FileWriter fw,因此,當您嘗試用fw初始化pw2,由於在pw1上調用close(),資源fw已經關閉。

0

public void close() 關閉流並釋放與其關聯的所有系統資源。 關閉以前關閉的流不起作用。

因爲您關閉了pw1,它是PrintWriter的第一個實例,它關閉了該框架內的所有實例。

Java Doc's for Print Writer

編碼快樂!

哎呀沒有看到這個已經被回答了!

相關問題