【问题标题】:How do I delete specific start line and end line of a file in java?如何在java中删除文件的特​​定起始行和结束行?
【发布时间】:2022-01-09 03:48:31
【问题描述】:

我对 java 还很陌生。当用户输入名称时,我想删除文本文件中的特定行。这是我的示例文本文件:

Name: Michael Collins
Contact: 0919023445
Date: 05/21/2042
Pax: 10
Birthdays: 10
Children: 6
Seniors: 3
Price: 8000
Discounted price: 5120

Name: Stephanie Wilkins
Contact: 09208210493
Date: 07/23/2420
Pax: 40
Birthdays: 2
Children: 3
Seniors: 4
Price: 32000
Discounted price: 30160

例如,用户输入了 Michael Collins,那么这些特定的行将被删除:

Name: Michael Collins
Contact: 0919023445
Date: 05/21/2042
Pax: 10
Birthdays: 10
Children: 6
Seniors: 3
Price: 8000
Discounted price: 5120

或者至少被移动到一个临时文件并从原始文件中删除。

【问题讨论】:

  • 到目前为止你尝试过什么?你知道如何读/写文件吗?
  • 如果您的文本在文件中,您可能会读取每一行,将每一行添加到 stringbuilder 但跳过名称匹配的行,然后继续添加行并将 stringbuilder 内容写回文件.
  • 你不能用双行返回分割并将其保存为List<String>。然后你有一个每个人的信息块,并在Name: 和第一行返回之间做一个简单的检查,看看名字是否在那个块中?

标签: java string file filereader filewriter


【解决方案1】:

如果文件有序,那么您需要键入每条记录的开始和结束位置。在这种情况下,它看起来像“名称”和“折扣价”。所以

  • 读入行并将记录复制到temp 文件,直到您看到记录开始标记和所需的名称。
  • 读取行,直到您看到记录结束标记(不要复制到临时文件,但您可能希望复制到该记录的某个保存文件)。
  • 然后读入文件的其余部分,复制到临时文件。您可能想跳过下一行,因为它(应该)是空白的。
  • 然后用 temp 替换原始文件(例如重命名等)

如果您的文件由csv 格式的单行组成,这会更容易。那么你需要做的就是专注于名称并忽略一行。

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2023-03-23
    • 2011-08-13
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多