Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码是删除整个文件,而不是在Java中添加我想要的行_Java_Arrays_Filewriter_Bufferedwriter - Fatal编程技术网

代码是删除整个文件,而不是在Java中添加我想要的行

代码是删除整个文件,而不是在Java中添加我想要的行,java,arrays,filewriter,bufferedwriter,Java,Arrays,Filewriter,Bufferedwriter,我已经做了一个座椅定位系统,需要一个选项来取消座位。我已经写了这个代码,它类似于预订座位时的代码,但目前它正在删除整个文件,我不知道为什么。PS我知道取消操作需要更多的验证,当我知道如何更改正确的内容时,我将输入这些验证。正确的验证结果将显示在电子邮件地址和电子邮件地址中 private static void cancelSeat() throws IOException { int index = 0; System.out.println("-- Please Enter

我已经做了一个座椅定位系统,需要一个选项来取消座位。我已经写了这个代码,它类似于预订座位时的代码,但目前它正在删除整个文件,我不知道为什么。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! --");
}
还有我想在预订的地方放的文件

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

您没有在启用附加模式的情况下创建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);

请注意,一旦您的FileWriter按照@AustinAdams的答案修复,您将在文件末尾追加修改,而不是覆盖该席位已有的行。这就是你想要的吗?如果没有,您还必须先读取文件以找到需要修改的行。不,这不是我想要的,我要做的是首先修改数组以存储新数据,然后将其打印回文件,这样我就不必继续读取文件。
FileWriter fw = new FileWriter("C:\\Users\\sylve\\OneDrive\\Desktop\\seats2.txt", true);
BufferedWriter amendFile = new BufferedWriter(fw);