Как удалить конкретную начальную и конечную строки файла в java?

#java #string #file #filereader #filewriter

#Ява #строка #файл #устройство для чтения файлов #пишущая машинка

Вопрос:

я довольно новичок в 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  

например, пользователь ввел Майкла Коллинза, после чего эти конкретные строки будут удалены:

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

или, по крайней мере, перемещается во временный файл и удаляется из исходного файла.

Комментарии:

1. Что вы пробовали до сих пор? знаете ли вы, как читать/записывать файлы?

2. Если текст находится в файле, вы можете прочитать каждую строку, добавить каждую строку в stringbuilder, но пропустить строки, в которых имя совпадает, затем продолжить добавление строк и записать содержимое stringbuilder обратно в файл.

3. Не могли бы вы разделить возврат на две строки и сохранить это как Listlt;Stringgt; . Затем у вас есть блок информации для каждого человека, и вы делаете простую проверку между Name: ними и возвращением первой строки, чтобы узнать, есть ли имя в этом блоке?

Ответ №1:

Если файл хорошо упорядочен, вам нужно указать, где начинается и заканчивается каждая запись. В данном случае это выглядит как «название» и «Цена со скидкой». Так

  • прочитайте строки и скопируйте записи в temp файл, пока не увидите маркер начала записи и нужное имя.
  • читайте строки, пока не увидите маркер конца записи (не копируйте во временную, но, возможно, вам захочется скопировать его в какой-нибудь файл сохранения для этой записи).
  • затем прочитайте оставшуюся часть файла, скопировав в temp. Возможно, вы захотите пропустить следующую строку, так как она (должна быть) пустой.
  • затем замените исходный файл на временный (например, переименовать и т. Д.)

Это было бы проще, если бы ваш файл состоял из одной строки в csv формате. Тогда все, что вам нужно сделать, это сосредоточиться на имени и игнорировать одну строку.