Java My delete a specific line函数删除整个文件的内容

Java My delete a specific line函数删除整个文件的内容,java,Java,我对java还是新手,不能完全理解BufferedReader和FileWriter是如何工作的,所以其中一些代码被上传了。这段代码必须删除用户想要删除的一行,而不是一行。它删除了整个文件内容 Scanner titlerem= new Scanner (System.in); System.out.println("Enter student number:"); title = titlerem.next (

我对java还是新手,不能完全理解BufferedReader和FileWriter是如何工作的,所以其中一些代码被上传了。这段代码必须删除用户想要删除的一行,而不是一行。它删除了整个文件内容

              Scanner titlerem= new Scanner (System.in);
              System.out.println("Enter student number:");
              title = titlerem.next ();

              System.out.print("Are you sure you want to delete it [Y/N]?");
              String tString = titlerem.next();
              char temp2 = tString.charAt(0);

   switch(temp2)
   {


  case('Y'):
    {

              // construct temporary file
              File inputFile = new File("phonebook.txt");
              File tempFile = new File(inputFile + " ");

              BufferedReader br = new BufferedReader (new FileReader("phonebook.txt"));
              PrintWriter Pwr = new PrintWriter(new FileWriter (tempFile));
              String line = null;


              while((line = br.readLine()) !=null) {
                  if(line.trim().startsWith(title)){
                      continue; 
                  }
                  else{
                      Pwr.println(line);
                      Pwr.flush();
                  }
              }

            // delete book file before renaming temp
            inputFile.delete();

            // close readers and writers
            Pwr.close();      
            br.close();


           //  rename temp file back to books.txt
            if(tempFile.renameTo(inputFile)){
                 System.out.println("Deletion succesful");
            }
            else
            {
             System.out.println("Update failed");
                  }
     }     



    case('N'):
    {
          System.out.print("Deletion did not proceed");
          break;
    }


       }             

有人能帮我吗。

我相信你的代码很好,除了你的
开关
案例陈述中没有
中断
。因此,即使正确创建并重命名了文件,您也将始终从第二个案例陈述中得到消息,这可能会产生误导,因为它说:删除未继续

首先检查文件系统中的内容是否按应有的方式编辑,并且没有中断语句。如果是,则只需通过添加中断语句来更正
开关
的情况。

File.delete()将删除整个文件,而不是它所在的行。文档也这么说,您的代码注释似乎反映了这一意图。首先是
br.close()
,然后是
inputFile.delete()
。另外,
startsWith(title+)
因此学生1不会删除1,10,11,…,100。。。