2014-04-19 126 views
3

我有StringBuilder sb,我希望該字符串另存爲*.txt文件。問題是我得到了"filename.txt",但它完全是空的,在控制檯中也沒有錯誤。PrintWriter創建空文件

這裏是我的代碼:

System.out.print(sb.toString()); 
PrintWriter out; 
try{ 
    out = new PrintWriter("filename.txt"); 
    out.println(sb.toString()); 
}catch (Exception e) { 
    e.printStackTrace(); 
} 

控制檯輸出:

[19/3/2014] 

Ime in priimek: Matjaz Mav 
Naslov: Ppot 6, 1000 Ljubljana 
Telefon: 040 111 222 

Registerska št.: LJ 1234 
Znamka: Citroen 
Model: C4 
Letnik: 2005 
Opombe: Popravi 

謝謝!

回答

4

要麼創建PrintWriter與此構造方法,改變了第一個參數的OutputStream

out = new PrintWriter(new FileOutputStream("filename.txt"), true); 

打開自動沖洗,或者,只是關閉作家一旦您完成了與out.close()寫它。

+0

如果我嘗試在構造函數中使用true,如果得到以下消息:'找不到適合PrintWriter(String,布爾值)的縮瞳' 也許是因爲我使用NetBeans? 但是,感謝'out.close();'完美的作品:) –

+0

你錯過了有關'新的FileOutputStream'在答案的部分 –

2

您應該在此程序中使用out.close()聲明。

1

out.close();不見了。 你必須把它關閉會話。

1
PrintWriter out; 
    try{ 
     out = new PrintWriter("filename.txt"); 
     out.println(sb.toString()); 
     //add the below lines 
     out.flush(); 
     out.close(); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 

另一種方法是將PrintWriter與autoFlush打開。這可以通過

out = new PrintWriter(new FileOutputStream("filename.txt"), true); 

實現如果只out.close()這也將手頭解決這個問題,因爲這將internally flush寫在其內部緩衝區的內容。

希望這會有所幫助。

-1

如文件處理FileOutputStream或FileInputStream start.It必須關閉。所以你只需要添加out.close();在宣言結束時。