函數(shù)式編程
2022-09-01 17:44:27
我有一個(gè)文本文件,我試圖通過(guò)它在我的程序中寫(xiě)入。每當(dāng)用戶想要將圖書(shū)添加到圖書(shū)館目錄時(shí),圖書(shū)詳細(xì)信息都將保存到文本文件中。問(wèn)題是我的程序成功地寫(xiě)入了文本文件,但當(dāng)我嘗試添加另一本書(shū)時(shí),它只會(huì)一遍又一遍地覆蓋第一行。我有一個(gè)從Book類(lèi)繼承的ArrayList,它包含一本書(shū)的特定屬性(標(biāo)題,作者,出版商等)。在我當(dāng)前的程序中,我創(chuàng)建了一個(gè)名為bookInfo的變量,該變量存儲(chǔ)來(lái)自各自jTextFields的book屬性的String和int值。我相信它是一個(gè)“類(lèi)變量”(但我可能是錯(cuò)的),因?yàn)槲覍⑵涑跏蓟癁闀?shū)籍類(lèi)的構(gòu)造函數(shù)Book bookInfo = new Book(bookTitle, author, publisher, brandCallNumber, numberOfCopies);然后將此變量添加到 arrayList 中,并在程序中調(diào)用 WriteToFile() 方法。AddBookDialog 類(lèi)的代碼public class AddBookDialog extends javax.swing.JDialog {ArrayList<Book> books = new ArrayList<Book>();/** * Creates new form AddBook */public AddBookDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents();} private void jButtonSaveToLibraryActionPerformed(java.awt.event.ActionEvent evt) { String bookTitle = jTextFieldTitle.getText(); String author = jTextFieldAuthor.getText(); String publisher = jTextFieldPublisher.getText(); String brandCallNumber = jTextFieldBranchCallNumber.getText(); int numberOfCopies = Integer.parseInt(jTextFieldCopies.getText()); Book bookInfo = new Book(bookTitle, author, publisher, brandCallNumber, numberOfCopies); books.add(bookInfo); WriteToFile(); this.setVisible(false);} private void WriteToFile(){ WriteFile wf = new WriteFile("BookDetails.txt"); for(int i = 0; i < books.size(); i++) { Book b = books.get(i); String bookDetails = b.getBookTitle() + " : " + b.getAuthorName() + " : " + b.getPublisherName() + " : " + b.getBranchCallNumber() + " : " + b.getNumberOfCopies(); wf.write(bookDetails); } wf.close();}我希望我的程序做的是不斷添加到文本文件中。如果我添加另一本書(shū),那么文本文件的內(nèi)容應(yīng)該包括哈利·波特 : JK 羅琳 : 學(xué)術(shù) : FIC 羅爾 : 14哈姆雷特 : 威廉·莎士比亞 : 企鵝 : FIC 沙克 : 23相反,當(dāng)我嘗試將另一本書(shū)寫(xiě)入文件時(shí),它會(huì)覆蓋第一行。哈姆雷特 : 威廉·莎士比亞 : 企鵝 : FIC 沙克 : 23哈利·波特的書(shū)細(xì)節(jié)被覆蓋了
1 回答

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)Javadoc的說(shuō)法:
public FileOutputStream(File file, boolean append) throw FileNotFoundException
創(chuàng)建文件輸出流以寫(xiě)入由指定的 File 對(duì)象表示的文件。如果第二個(gè)參數(shù)為 true,則字節(jié)將寫(xiě)入文件末尾而不是開(kāi)頭。將創(chuàng)建一個(gè)新的 FileDescriptor 對(duì)象來(lái)表示此文件連接。
第二個(gè)參數(shù) () 用于控制是否追加到現(xiàn)有文件而不是覆蓋它。boolean append
因此,在您的情況下,您應(yīng)該作為第二個(gè)參數(shù)傳遞true
添加回答
舉報(bào)
0/150
提交
取消