该代码将删除整个文件,而不是在Java中添加所需的行

我已经制作了一个座位预订系统,需要取消座位的一种选择。我已编写此代码,该代码类似于预订座位时的代码,但此刻正在删除整个文件,我不知道为什么。 PS:我知道取消操作需要更多的验证,当我弄清楚如何更改正确的内容时,将输入该验证。正确的验证将是和电子邮件地址。

private static void cancelSeat() throws IOException {

    int index = 0;
    System.out.println("-- Please Enter Your Seat Number To Cancel Your Reservation --");
    String userSeat = input.next().toUpperCase();

    for (int i = 0; i < index; ++i) {
        seatBookingSystem current = seats[i];
        if (current.getSeatNumber().equals(userSeat)){
            seats[i].cancel();
            System.out.println("-- Your Reservation Has Now Been Canceled,Goodbye --");    
        }
    }
    //write the new string with the replaced line OVER the same file

    BufferedWriter amendFile = new BufferedWriter(new FileWriter("C:\\Users\\sylve\\OneDrive\\Desktop\\seats2.txt"));
    for (int i = 0; i < index; ++i) {
        amendFile.write(seats[i].ammendFile());
    }
    amendFile.close();

    System.out.print("-- Your Has Seat Been Canceled,Thank You! --");
}

被调用的代码的另外两个部分是cancel()和ammendFile()

public String cancel() {
    return this.email = "free";
}

public String ammendFile() {
    DecimalFormat dF = new DecimalFormat("#.00");
    String result = seatNumber + " " + seatClass +  " " + isWindow + " " + isAisle + " " + isTable + " " + dF.format(seatPrice) + " " + email + "\n";
    return result;
}

以及我要修改的文件所在的位置。

1A STD true false false 23.50 free
1B STD false true false 23.50 free
1D STD true true false 27.50 free
2A STD true false true 24.50 free
2B STD false true true 24.50 free
2D STD true true true 28.50 BOB
3A STD true false true 24.50 free
3B STD false true true 24.50 free
3D STD true true true 28.50 free
4A STD true false false 23.50 free
4B STD false true false 23.50 free
4D STD true true false 27.50 free
5A 1ST true true true 48.50 free
5C 1ST false true true 44.50 free
5D 1ST true false true 44.50 free
6A 1ST true true true 48.50 free
6C 1ST false true true 44.50 free
6D 1ST true false true 44.50 free
xiaoaojianghu168 回答:该代码将删除整个文件,而不是在Java中添加所需的行

您不会在启用追加模式的情况下创建FileWriter。您需要更改此行:

BufferedWriter amendFile = new BufferedWriter(new FileWriter("C:\\Users\\sylve\\OneDrive\\Desktop\\seats2.txt"));

对此:

FileWriter fw = new FileWriter("C:\\Users\\sylve\\OneDrive\\Desktop\\seats2.txt",true);
BufferedWriter amendFile = new BufferedWriter(fw);
本文链接:https://www.f2er.com/2939680.html

大家都在问