Обновить метод текстового файла

У меня есть jtable, который можно редактировать, а затем сохранить (обновить) в текстовый файл. Пользователь выбирает строку (которая содержит запись книги) и запрашивает заимствование этой книги, я использую этот метод для обновления, но теперь при обновлении старые данные не удаляются.

user_AllBooks uAllBooks = new user_AllBooks();
    @Override
public void actionPerformed(ActionEvent event) {
    if (event.getSource() == borrowButton) {
        borrowInitialize(bTable.getSelectedRow());
}

    public void borrowInitialize(int row) {
    if (uAllBooks.getValueAt(row, 3).equals("Yes")) {
        JOptionPane.showMessageDialog(null, "This Book Was Borrowed");
    } else {
        uAllBooks.setValueAt("Yes", row, 3);
        uAllBooks.fireTableRowsUpdated(row, row);
        uAllBooks.updateFiles(uAllBooks.bData);
    }
}
...
}

public class user_AllBooks extends AbstractTableModel {
...

public void updateFiles(ArrayList<BookInformation> data) {
    PrintWriter Bpw = null;
    try {
        Bpw = new PrintWriter(new FileWriter("AllBookRecords.txt" , true));
        for (BookInformation bookinfo : data) {
            String line = bookinfo.getBookID()
                    + "     " + bookinfo.getBookName()
                    + "     " + bookinfo.getBookDate()
                    + "     " + bookinfo.getBorrowStatus();
            Bpw.println(line);
        }

        Bpw.close();
    } catch (FileNotFoundException e1) {
    } catch (IOException ioe) {
    }
}
...
}

Мой Класс BookInformation:

public class BookInformation {

private String BookName;
private String BookDate;
private String BookID;
private String BorrowStatus;

public String getBookName() {
    return BookName;
}

public void setBookName(String book_name) {
    this.BookName = book_name;
}

public String getBookDate() {
    return BookDate;
}

public void setBookDate(String book_date) {
    this.BookDate = book_date;
}

public String getBookID() {
    return BookID;
}

public void setBookID(String Book_id) {
    this.BookID = Book_id;
}

@Override
public String toString() {
    return BookID + "     " + BookName + "     "
            + BookDate + "     " + BorrowStatus + "\n";
}

public String getBorrowStatus() {
    return BorrowStatus;
}

public void setBorrowStatus(String borrowStat) {
    BorrowStatus = borrowStat;
}
}

Благодарю.введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесь

1 ответ

Решение

Изменить эту строку

Bpw = new PrintWriter(new FileWriter("AllBookRecords.txt" , true));

в

Bpw = new PrintWriter(new FileWriter("AllBookRecords.txt" , false));

Второй параметр (логический) изменяет, должен ли он добавлять текстовый файл (добавить в конец его) или просто переписать все.

Источник: Сводка конструктора Javadoc для FileWriter:

FileWriter(String fileName, boolean append) 
    Constructs a FileWriter object given a file name with a boolean
    indicating whether or not to append the data written.
Другие вопросы по тегам