[英]Java save text file
我有一個JFileChooser,它設置為一個“保存”對話框,還有一個jTextArea,我可以在其中寫東西,我的問題是,當我保存它時,不會保存文本。 有什么想法我做錯了嗎?
private void saveAsButtonMouseClicked(java.awt.event.MouseEvent evt) {
SaveAs saveasbtn= new SaveAs();
int retrival = saveOption.showSaveDialog(null);
if (retrival == JFileChooser.APPROVE_OPTION)
{saveasbtn.saveAs(jTextArea2.getText(),saveOption);}
}
public void saveAs(String value,JFileChooser saveOption){
try {
FileWriter fw;
fw = new FileWriter(saveOption.getSelectedFile()+".txt");
fw.write(value);
} catch (IOException ex) {
Logger.getLogger(SaveAs.class.getName()).log(Level.SEVERE, null, ex);
}
}
您沒有在saveAs
方法中關閉FileWriter。 使用try-with-resources,以便關閉編寫器並將輸出寫入文件。 也許與其名稱相反,但FileWriter
也具有緩沖,盡管它的緩沖區比BufferedWriter
緩沖區小,因此不會立即將內容寫入磁盤。 代碼如下:
try (FileWriter fw = new FileWriter(saveOption.getSelectedFile()+".txt")) {
fw.write(value);
} catch (IOException ex) {
Logger.getLogger(SaveAs.class.getName()).log(Level.SEVERE, null, ex);
}
或者,你可以添加抓后finally塊和調用fw.close()
顯式存在(調用fw.flush()
如果關閉流是多余的)。
您可以強制FileWriter
使用fw.flush()
立即將所有寫入的數據刷新到文件中。
不要忘記最后close
文件。 完成fw.close()
,您寫入的所有數據將自動刷新到文件,並且該文件將被安全關閉。
如果對資源使用try,文件將被刷新並自動保存。
public void saveAs(String value,JFileChooser saveOption) {
try(FileWriter fw = new FileWriter(saveOption.getSelectedFile()+".txt")) {
fw.write(value);
} catch (IOException ex) {
Logger.getLogger(SaveAs.class.getName()).log(Level.SEVERE, null, ex);
}
}
使用try-with-resources語法確保數據被寫出。
try (FileWriter fw = new FileWriter(saveOption.getSelectedFile()+".txt") {
fw.write(value);
} catch (IOException ex) {
Logger.getLogger(SaveAs.class.getName()).log(Level.SEVERE, null, ex);
}
您可能還想讓IOException
從saveAs()
傳播(通過向方法簽名添加throws IOException
),或者執行其他類似返回boolean
以指示寫入是否成功。 否則,您的程序將無法判斷saveAs()
是否真正起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.