当前位置: 首页 > 知识库问答 >
问题:

文本文件被覆盖而不是保存时出现问题

柴瀚昂
2023-03-14
Book bookInfo = new Book(bookTitle, author, publisher, brandCallNumber, numberOfCopies);

然后将这个变量添加到arrayList,我在程序中调用WriteToFile()方法。

AddBookDialog类的代码

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();
}

WriteFile类的代码

public class WriteFile{
private FileOutputStream filename;

public WriteFile(String inputfilename)
{
    try
    {
        filename = new FileOutputStream(inputfilename,false);
    }
    catch (IOException e) {}
 }

 public void write(String item)
 {
    PrintStream output = new PrintStream(filename);
    output.println(item);
 }

 public void close()
 {
    try
    {
        filename.close();
    }
    catch (IOException e) {
      e.printStackTrace();
}
 }
}

相反,当我尝试向该文件写入另一本书时,它反而覆盖了第一行

哈姆雷特:威廉莎士比亚:企鹅:FIC Shak:23

//《哈利·波特》的书中详细内容已被改写

暂时还没有答案

 类似资料:
  • 问题内容: 我正在尝试编写一种方法(如果尚不存在),然后制作一个“ log.txt文件”,然后将其写入该文件。我遇到的问题是每次调用该方法时,它都会覆盖现有的日志。如何更改方法,以使它不会覆盖数据而是仅更新文件? 我的写入文件方法: 问题答案: 只需更改为

  • 此代码从您要在editText中注册的熟人处接收信息,然后单击finButton将接收到的信息保存为一个名为FriendList.txt的文件。但是,当按下finButton时,将从当前执行的try-catch语句中输出Toast消息。此外,checkpermission也不起作用,它包装在try~catch语句中,但在logcat上没有输出。 和显化。 洛克卡特

  • 问题内容: 目前,我有一个循环,试图通过在文件名字符串中添加后缀来查找未使用的文件名。一旦找不到文件,它将使用无法以该名称打开新文件的名称。问题在于此代码用于网站中,并且可能多次尝试同时执行同一操作,因此存在竞争条件。 如果在检查时间和另一个线程中的打开时间之间创建了一个文件,如何防止python覆盖现有文件。 我可以通过将后缀随机化来最小化机会,但是根据路径名的各个部分,机会已经被最小化了。我想

  • 我想知道如何覆盖现有文件,而不是在文本接收器中自动创建新文件。 例如,如果我运行模型两次,它会创建两个文件。第二个文件是使用相同的定义文件名创建的,但名称后面有一个新数字,例如modelouput.txt、modeloutput.0.txt、modeloutput.1.txt. 如何摆脱这种自动创建版本号的方式,如果现有版本号存在,就直接覆盖它。

  • 问题内容: 我正在尝试从文本文件中删除一行文本,而不将其复制到临时文件中。我正在尝试通过使用Printwriter和Scanner并让它们同时遍历文件来实现此目的,writer写Scanner读取的内容并用相同的东西覆盖每一行,直到到达我希望的行为止删除。然后,我前进扫描仪而不是写程序,然后像以前一样继续。这是代码: 但首先要使用参数:我的文件名是数字,因此它将显示为1.txt或2.txt等,因此

  • 我试图在一个特定文件夹中保存多个图像第一个图像保存正确,但下一个图像只是替换第一个图像。如何保存多个图像?如何动态命名并使用相同的名称保存图像,但使用不同的扩展名,如image、image1、image2。。。下面是我的代码