从 HashMap 的文本文件中删除行?

时间:2021-03-22 18:15:36

标签: java bufferedreader bufferedwriter

我被困在我的静态内部类的这一部分

    // Remove from HashMap
    public void removeUser(User user) throws IOException {
        BufferedReader brUser = new BufferedReader(new FileReader("users.txt"));
        BufferedWriter bwUser = new BufferedWriter(new FileWriter("users.txt"));

        StringBuffer sb=new StringBuffer("");

        String line;
        while ((line = brUser.readLine()) != null) {
            String[] temp = line.split(",");
            if (Integer.parseInt(temp[3]) != user.getID())
                System.out.println("FOUND");
                sb.append(line).append("\n");
        } ;
        brUser.close();

        bwUser.write(sb.toString());
        bwUser.close();
    }

本质上,目标是保存.txt中的每一行,除非一行中的第三个分隔符等于参数键(即temp[3]是每个用户对象(用户ID)的键参数) .我希望它会一行一行地遍历每一行,然后用一个没有冗余用户数据的版本完全覆盖文件的先前版本。但是,它只运行一次循环?它不执行循环的“找到”段,尽管这将继续删除文件中的所有内容(当我想保留 temp[3] 不等于参数“temp[3] 的所有行时,将其留空]”)。我只能假设这是因为 StringBuffer 仍然是空的,因此整个文件都没有被覆盖。

对此事的任何建议将不胜感激!附言访问用户哈希图没有问题,如果这意味着什么,单独的删除查询确实有效。

0 个答案:

没有答案