![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| erslgoeirjh |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 16.12.2005 Репутация: нет Всего: нет |
Есть текстовой файл data.txt , состоящий из 10 строк. Как изменить 9 и 10 строки в этом файле, а остальные (1--8) оставить без изменения?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Смотря что подразумевается под "изменить". Если изменить это заменить символ X на Y, то можно обойтись RandomAccessFile. Если же строка в результате поменяет длину (или еще как изменится количество байт в строке), то проще создать новый файл, записать туда первые 9 строк без изменения, записать 9 и 10 измененные строки. Удалить старый файл, а новый переименовать.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Pawl |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Может, и проще, но иногда работа с одним файлом - жесткое требование заказчика. Я делал похожую задачу, только малость сложнее. Мне надо было заменить в файле регулярное выражение определенным символом. Кстати, помогли мне это сделать тут, на форуме, а также я нашел статью с примером, как увеличивать/уменьшать размер файла. Свой код я тут приведу, Вам надо будет его только малость упростить. К примеру, я читал в буфер из файла посимвольно, в объект StringBuilder и проверял, есть ли в этом объекте искомое регулярное выражение. Если нет, читал дальше, а если да - преобразовывал StringBuilder в строку, делал в ней замену, сравнивал длину новой строки со старой, если нужно - изменял размер файла, записывал в него новую строку и читал файл дальше. Вам же можно просто считать 8 строк (хотя бы redLine'ом), а 9-ю и 10-ю последовательно сверить по длине с соответствующими новыми строками, при необходимости каждый раз изменять длину файла и писать в файл новые строки, как это сделано у меня.
Добавлено через 3 минуты и 49 секунд Странно, почему текст кода не отформатировался... Вроде, правильно код вставлял. -------------------- В действительности всё совсем не так, как на самом деле |
||||
|
|||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
прочитать файл (в вашем случае можно целиком) в строку ,изменить там все как нужно, reg ex'ом например, и перезаписать:
|
|||
|
||||
| Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Вообще да, для ДАННОГО случая - это самый простой вариант -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |