从Java中的文件中删除特定记录

时间:2017-10-19 07:27:29

标签: java file-handling

我正在尝试从File中删除特定记录,但每次运行它都会删除整个文件。任何人都可以告诉我们该在哪里?

我添加了temp db,方法也正确。循环逻辑存在一些问题。请帮助我。谢谢!

 public void DeleteRecordByID() throws IOException {
                Scanner strInput =  new Scanner(System.in);
                String ID, record;

            File tempDB = new File("employees.txt");
            File db = new File("employees.txt");

            BufferedReader br = new BufferedReader( new FileReader( db ) );
            BufferedWriter bw = new BufferedWriter( new FileWriter( tempDB ) );

            System.out.println("\t\t Delete Employee Record\n");

            System.out.println("Enter the Employee ID: ");
            ID =  strInput.nextLine();

            while( ( record = br.readLine() ) != null ) {
                if( record.contains(ID) ) 
                    continue;

                bw.write(record);
                bw.flush();
                bw.newLine();
            }

            br.close();
            bw.close();
            db.delete();
            tempDB.renameTo(db);
    }

2 个答案:

答案 0 :(得分:1)

您应该使用两个不同的文件名,一个用于阅读,另一个用于写作。

答案 1 :(得分:0)

您应该创建一个用于编写数据的临时文件。之后,您可以删除原始文件,然后将临时文件重命名为原始文件。