Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше реализовать выборочное удаление записей из файла? / 20 сообщений из 20, страница 1 из 1
23.07.2012, 17:40:43
    #37889549
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
Есть файл (пока текстовый), в котором хранятся строки с данными. В каждой строке есть поле с датой, когда данная строка была записана в файл.
типа
Код: java
1.
2.
3.
текст1  01-02-2011 текст2
текст1  01-02-2011 текст2
текст1  01-03-2011 текст2


Нужно удалить данные из файла за определенный день. Сейчас удаление происходит путем создания нового файла, перекачки в него данных за исключением данных с датой, за которую нужно очистить, и удалением старого файла.
Есть в Java библиотеки для редактирования файла (т.е. удаление определенных строк) текущего файла, без создания нового? Можно даже библиотеки для XML-файлов.
...
Рейтинг: 0 / 0
23.07.2012, 17:48:02
    #37889563
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAЕсть в Java библиотеки для редактирования файла (т.е. удаление определенных строк) текущего файла, без создания нового?Если вам не страшно потерять данные, то можно "переписать поверх и усечь".
...
Рейтинг: 0 / 0
23.07.2012, 17:55:29
    #37889576
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
Basil A. Sidorov,

Так перед этим все данные в оперативку перегнать чтоли?
...
Рейтинг: 0 / 0
23.07.2012, 17:56:55
    #37889579
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAТак перед этим все данные в оперативку перегнать чтоли?Или в память или в во временный файл.
Нет, можно рассмотреть и разную экзотику, но зачем?
...
Рейтинг: 0 / 0
23.07.2012, 18:02:19
    #37889588
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
Basil A. Sidorov,

Да так я сейчас и делаю.
Файл большой. На время перекачки получаются два файла по 1Гб. Не много , но все же.



Я с XML-файлами много не работал, но думал, что XML-файлы для таких задач и используются. Благодаря своей разметке, можно осуществлять быстрый поиск и быстрое удаление строк по битово прям из того же файла (как-то так). А конкретных библиотек в Java не знаю.
...
Рейтинг: 0 / 0
23.07.2012, 18:02:55
    #37889589
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCA,

Или это мое заблуждение?
...
Рейтинг: 0 / 0
23.07.2012, 18:06:05
    #37889593
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
имхо при таких размерах пора задуматься о локальной бд, а не гонять гигабайты по винту.
...
Рейтинг: 0 / 0
23.07.2012, 18:10:52
    #37889597
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
chpashaимхо при таких размерах пора задуматься о локальной бд, а не гонять гигабайты по винту.
+1 Ну или на крайняк хранить записи для каждого дня в отдельном файле, а главный файл будет состоять только из активных дней, нужно удалять - чикаем запись из главного файла, и потом асинхронно удаляем сам файл
...
Рейтинг: 0 / 0
23.07.2012, 18:16:05
    #37889599
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCA,


АндрейCAфайлы для таких задач и используются. Благодаря своей разметке, можно осуществлять быстрый поиск и быстрое удаление строк по битово прям из того же файла (как-то так). А конкретных библиотек в Java не знаю.

Файл это именованная последовательность байт. Разметка не имеет отношения к файловой системе и никак не упрощает задач по перестройке цепочек данных на диске. Распространенные файловые системы не позволяют вырезать из середины файла произвольные куски. Обычно поддерживается только обрезание конца файла. Лучше или пишите сразу по дням в отдельные файлы, или сделайте фиксированную длину строки. Тогда можно замещать удаленные строки строками, изъятыми с конца. Хотя это уже анальная акробатика.
...
Рейтинг: 0 / 0
23.07.2012, 18:16:12
    #37889600
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
забыл ник,
Так бы и сделал.

авторимхо при таких размерах пора задуматься о локальной бд, а не гонять гигабайты по винту.
Но как раз и нужно эти данные держать отдельно от базы на другом диске, так как это дополнительная информация, которая пишется из базы данных.

автор+1 Ну или на крайняк хранить записи для каждого дня в отдельном файле, а главный файл будет состоять только из активных дней, нужно удалять - чикаем запись из главного файла, и потом асинхронно удаляем сам файл
Есть проблема на данный файл замапина таблица в базе Oracle. ЧТОБЫ ТОЛЬКО ЧИТАТЬ!. А мапить на произвольное количество файлов невозможно.
...
Рейтинг: 0 / 0
23.07.2012, 18:36:09
    #37889619
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAБлагодаря своей разметке, можно осуществлять быстрый поиск и быстрое удаление строк по битово прям из того же файла (как-то так). А конкретных библиотек в Java не знаю.Как вам уже пояснили - любая библиотека ограничена возможностями файлового API.
Лично я знаю только одну систему, где есть "файл базы данных" именно на уровне системы, а не на уровне конкретной СУБД.
...
Рейтинг: 0 / 0
23.07.2012, 18:50:46
    #37889634
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCA, если уж это "БД на файлах" то я-бы каждый день создавал новый файл
и грохал историю старых файлов согласно политике хранения. Это более
рационально с точки зрения ресурсов файловой системы и главное быстро
...
Рейтинг: 0 / 0
23.07.2012, 18:53:02
    #37889641
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAНо как раз и нужно эти данные держать отдельно от базы на другом диске, так как это дополнительная информация, которая пишется из базы данных.
ну так и держи отдельно, но не в плоском файле, а в локальной базе типа sqlite&co
...
Рейтинг: 0 / 0
24.07.2012, 09:39:36
    #37890037
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
chpasha,
авторну так и держи отдельно, но не в плоском файле, а в локальной базе типа sqlite&co
Ах, если бы я был архитектором.
...
Рейтинг: 0 / 0
24.07.2012, 11:45:40
    #37890235
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAЯ с XML-файлами много не работал, но думал, что XML-файлы для таких задач и используются. Благодаря своей разметке, можно осуществлять быстрый поиск и быстрое удаление строк по битово прям из того же файла (как-то так). А конкретных библиотек в Java не знаю.
Не знаю с чем ты работал но XML-файл это плохая альтернатива БД. Он может
подходить для экспорта-импорта, ETL, и в качестве протоколов RPC. Но как
модифицируемый объект в файловой системе он непригоден.
...
Рейтинг: 0 / 0
24.07.2012, 12:06:34
    #37890269
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAАх, если бы я был архитектором.
ну ты уже хотя-бы знаешь как надо было, в отличии от твоего архитектора. в создавшейся ситуации либо переливай файлы как переливал, либо группируй по дням как посоветовали.
...
Рейтинг: 0 / 0
25.07.2012, 09:32:48
    #37891587
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
mayton,
maytonНо как модифицируемый объект в файловой системе он непригоден.
А можно узнать почему?
Текстовый файл лучше? Или csv?
...
Рейтинг: 0 / 0
25.07.2012, 09:53:51
    #37891599
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCA,
что такое в сабже файл?
Он существует в 2-х ипостасях.
- сохранённый на диске
- прочитанный в оперативке
Если переключить механизмы записи в файл на диске НА API в оперативке (класс-объект).
То сама задача теряет смысл. Не важно какой формат будет на HDD. Хоть бинарный.
...
Рейтинг: 0 / 0
25.07.2012, 09:55:12
    #37891601
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAmayton,
maytonНо как модифицируемый объект в файловой системе он непригоден.
А можно узнать почему?
Текстовый файл лучше? Или csv?
Почти и текстовый и csv болеют теми-же болезнями.
Эффективное удаление/обновление строк возможно только
для специальных форматов которые соптимизированы
для этого. Тоесть имеют внутреннюю бинарную структуру
сегментов, экстентов, блоков e.t.c.
...
Рейтинг: 0 / 0
25.07.2012, 09:57:06
    #37891604
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше реализовать выборочное удаление записей из файла?
АндрейCAЕсть файл (пока текстовый),
вот это является ВХОДНЫМ параметром в задачу - константой.
Если это обменный формат внешний к ИС, то чётко прописан формат файла.
Т.е. вопрос не имеет смысла.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше реализовать выборочное удаление записей из файла? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]