#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
формате. Тогда все, что вам нужно сделать, это сосредоточиться на имени и игнорировать одну строку.