删除文本文件中的特定行

我有一个.txt文件。inventory.txt它包含

banana, 1, 15
dog, 1, 15
cats, 20, 30

我想创建一个方法来删除其中的一行,比如说删除了 cats 行,通过输入 catscats, 20, 30

我的代码提示用户 removedItem,改为 inventory.txt,修剪每一行,并检查是否 trimmedLine 等于 removedItem那么 continue 并写信给 deleteditems.txt 每一 line 删去 trimmedLine. 然后,我关闭两个 writerreader删掉原来的 inventory.txt,并改名为 deleteditems.txtinventory.txt. 但是,它什么都不做,编译后这一行仍然存在。

代码。

public void removeItems() throws IOException {

        String line;

        File inventory = new File("src/inventory.txt");
        File temp = new File("src/deleteditems.txt");

        BufferedReader reader = new BufferedReader(new FileReader("src/inventory.txt"));
        BufferedWriter writer = new BufferedWriter(new FileWriter("src/deleteditems.txt"));

        displayInventory();

        temp.createNewFile();

        System.out.println("what item do you want to remove");
        String removedLine = scan.next();

        while((line = reader.readLine()) != null) {
            String trimmedLine = line.trim();
            if(trimmedLine.equals(removedLine)) {
                trimmedLine = "";
            }
            writer.write(line + System.getProperty("line.separator"));
        }
        reader.close(); 
        writer.close(); 
        inventory.delete();
        temp.renameTo(inventory);

    }

输出:

banana, 1, 15
dog, 1, 15
cats, 20, 30
what item do you want to remove
cats, 20, 30

编译后的文本文件。

banana, 1, 15
dog, 1, 15
cats, 20, 30

解决方案:

你的做法有两个问题。

  • 你把整个行和输入的 “等价 “进行比较… 为了匹配,用户不可能只输入 “猫”,他们需要输入 “猫,20,30″,因为那是一个行所包含的内容。
  • 即使真的匹配了,你还是要把 “行 “写到输出文件中去。

你可以这样解决。

 while((line = reader.readLine()) != null) {
            String trimmedLine = line.trim();
            if(!trimmedLine.startsWith(removedLine)) {

               writer.write(line + 
                  System.getProperty("line.separator"));
            }
        }

只有在不以输入开始的情况下,才会写出这一行。

顺便说一下,你应该考虑一下是否使用 “用资源试试” 语句来打开你的 readerwriter,以确保即使在发生异常的情况下,事情也能得到正确的清理。

给TA打赏
共{{data.count}}人
人已打赏
未分类

迭代图像大小不使用循环?

2022-9-9 4:57:17

未分类

在Python中并行调用函数

2022-9-9 4:57:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索