当前位置: 首页 > 面试题库 >

Java在文件中找到一行并将其删除

孔才
2023-03-14
问题内容

我正在寻找一个小的代码段,它将在文件中找到一行并删除该行(不是内容而是行),但是找不到。因此,例如,我在以下文件中:

myFile.txt:

aaa
bbb
ccc
ddd

需要具有这样的功能:public void removeLine(String lineContent),如果通过 removeLine("bbb"),我将获得如下文件:

myFile.txt:

aaa
ccc
ddd

问题答案:

该解决方案可能不是最佳或漂亮的,但它可以工作。它逐行读取输入文件,并将每一行写到一个临时输出文件中。每当遇到符合您要查找的内容的行时,它都会跳过将其写出的操作。然后,它重命名输出文件。我从示例中省略了错误处理,关闭读者/作家等。我还假设您要查找的行中没有前导或尾随空格。根据需要更改trim()周围的代码,以便找到匹配项。

File inputFile = new File("myFile.txt");
File tempFile = new File("myTempFile.txt");

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String lineToRemove = "bbb";
String currentLine;

while((currentLine = reader.readLine()) != null) {
    // trim newline when comparing with lineToRemove
    String trimmedLine = currentLine.trim();
    if(trimmedLine.equals(lineToRemove)) continue;
    writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close(); 
reader.close(); 
boolean successful = tempFile.renameTo(inputFile);


 类似资料:
  • 问题内容: 我正在处理文件中的序列化和反序列化。而且,我正在堆叠使用with 。问题是我有服务器/客户端聊天应用程序,无论何时连接客户端,服务器都必须检查连接的客户端是否已注册。因此,当客户端连接到服务器时,服务器会创建一个输出流,例如 获取链接列表以检查此列表是否包含此对象。但是,总是创建一个没有内容的新文件。我知道是否将“ true”值作为附加文件的第二个参数传递,但是此.txt文件应仅包含一

  • 假设我有一个Hashmap对象myMap,它包含一组键和值, 假设我总共有30把钥匙。 现在我得到了一个键列表:

  • 问题内容: 我使用此命令查找具有给定模式的文件,然后将其重命名为其他文件 运行此命令时,我看到一些类似的输出 但是最后,当我运行时,我看到了旧文件名。 问题答案: 您正在回显’mv’命令,而不是实际执行它。改成:

  • 问题内容: 我在MongoDB中有一个文档,其中一个看起来像这样: 在每个文档中,我需要找到最小的项目并将其删除。所以应该是这样的: 看起来应该在这里使用函数,但是我不能再说了。 如何找到数组中的最小元素并将其删除? 我正在使用MongoDB和Pymongo驱动程序。 问题答案: 如果您不限于一步就完成查询,则可以尝试: 步骤1)将聚合函数与$ unwind和$ group运算符配合使用,以查找每

  • 问题内容: 我有一个大文件,只需要删除几行,是否有任何方法可以打开新文件并复制整个文本? 编辑:主要问题是,当它在多个txt filse中运行时,该程序失败 问题答案: 有什么方法可以做到而无需打开新文件并复制整个文本? 不,没有。当然,如果您想 安全地 做的话就没有。 而且也不会真正帮助您。它可以让您用相等数量的字节替换文件中的字节序列,但这并不意味着删除一行。 您可以这样使用RAF: 给定初始

  • 问题内容: 我正在使用XJC从XSD文件生成一堆.java文件。我还需要将这些文件编译为.class文件,并在运行时通过反射使用它们。 我遇到的问题是,在生成.java文件并尝试对其进行编译之后,编译器无法正确地对其进行编译,并给我以下错误: 我假设这与JVM不了解我刚刚生成的包,因此找不到引用的类有关。 这可以通过在生成.java文件后重新启动程序来解决。但是我很好奇,是否有一种方法可以在运行时