Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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_File Handling - Fatal编程技术网

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

在Java中从文件中删除特定记录,java,file-handling,Java,File Handling,我试图从文件中删除特定的记录,但每次运行它时都会删除整个文件。谁能告诉我臭虫在哪里吗 我已经添加了临时数据库,而且方法是正确的。循环的逻辑有一些问题。请帮帮我。谢谢大家! public void DeleteRecordByID() throws IOException { Scanner strInput = new Scanner(System.in); String ID, record; Fil

我试图从文件中删除特定的记录,但每次运行它时都会删除整个文件。谁能告诉我臭虫在哪里吗

我已经添加了临时数据库,而且方法是正确的。循环的逻辑有一些问题。请帮帮我。谢谢大家!

 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);
    }

您应该使用两个不同的文件名,一个用于读取,一个用于写入。

您应该创建一个临时文件,在其中写入数据。之后,您可以删除原始文件,然后将临时文件重命名为原始文件。

您需要准确回答问题。问题到底出在哪里,问题到底出在哪里。好的,问题是当我尝试使用特定ID删除数据时,它会删除我的文件。该文件将被删除,而不是特定的数据。您仅在此处显示部分代码。顺便说一下,延迟格式化的代码。你想让我们花时间来帮助你,所以你尽可能地让这件事变得简单。从花1分钟的时间正确格式化输入开始(而不是向我们倾倒无数无用的空行)。@GhostCat你一点也不帮助别人。因为你的评论很粗鲁。所谓的程序员。到目前为止,你的问题没有得到多少积极的反馈,是吗?我给你反馈了原因。你决定采取防御性态度,而不是把这看作是一个学习的机会,这样你的输入可能会得到更好的接受。您不喜欢被告知您的输入看起来是惰性格式的吗?好吧,那就改进那部分。再说一遍:你希望我们花时间来帮助你。你看,预览窗口的存在是有原因的!你会如何看待一位同事来找你,并向你提供这样的信息?你可能不喜欢这样。但是我很粗鲁-因为我告诉了你真相?我有两个不同的档案。DB和TEMPDBno,您有两个文件变量,但它们都指向文件系统上的同一个文件
employees.txt
。观察正确。但这基本上归结为“简单的打字错误”。正如它现在读到的,你的“答案”看起来更像是一个平庸的评论。答案更正:不同的文件->不同的文件名。谢谢,谢谢@jurez我的代码实际上是固定的。这就是真正的程序员的帮助。