![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Собственно имеется файл , он будет хранилищем , то есть в него периодически будет писать в конец файла , и браться с начала(при этом еще забранное удаляться должно) , как мне правильно реализовать обращение к файлу(посколько несколько потоков будет одновременно работать с ним), и как мне считывать первую строку и переписывать файл , чтоб после считывания и удаления самой верхней строки файл переписывался со сдвигом(аналог очереди).. Пока пытаюсь что нить сделать мало что выходит... Буду благодарен за помощь.
-------------------- Нехорошо блин!!! |
|||
|
||||
| Aikus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 29.11.2007 Репутация: нет Всего: 1 |
Если не секрет, обязательно делать это из одного файла? Может лучше будет сделать временный, или вобще использовать БД?
|
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Ну собственно я немного концепцию требований передумал , решил я не использовать файл как переменную , а просто использовать как хранилище данных при экстренном закрыти программы, функции которые надо реализовать для данного файла:
1)Запись в файл определенного формата - зделанно. 2)Чтение из файла с начала(с самого верха), удаление прочтенной записи, - пока еще не знаю какой алгоритм получиться... 3)Ну и собственно парсинг прочтенных строк из файла и приведение к нужному типу данных - выполненно.. Так что остался только вопрос номер 2 , если кто уже реализовывал это или знает как , то от помощи не откажусь... -------------------- Нехорошо блин!!! |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Вопщем как правильно прочитать файл и как удалить из файла запись?
-------------------- Нехорошо блин!!! |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Можно каждые сутки (час, минуту - в зависимости от объёма данных) создавать новый файл и удалять полностью прочтённые.
|
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Нет , так мне не надо, я записываю строки содержищие данные, которые я должен отправить, но не отправил , так как это стояло в очереди , но программа остановилась по разным причинам, при старте я проверю есть ли записи в файле , то что есть ставлю в очередь и отправляю(паралельно удаляю ту запись , которая уже прочитана . Вот как мне надо.
-------------------- Нехорошо блин!!! |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Можно каждая запись - один файл
Можно в записи оставить место для метки "прочтенная" Можно создать файл опредённого размера и по достижении конца начинать писать в начало (размер файла должен быть достаточен чтобы хранить все непрочтённые записи) Удалять же прочтённые записи переписывая непрочтённые в начало файла - нерентабельно. |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Знаю , но именно так мне надо..Вот как сделать это пока не знаю. Добавлено через 2 минуты и 12 секунд Скажем а в файл объект писать можно и читать как объект? Например PDU(из SMPP протокола) помойму же возможно? Это сообщение отредактировал(а) barin_Student - 4.4.2008, 09:30 -------------------- Нехорошо блин!!! |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Это без разницы чем ты пишешь. Допустим все записи одной длины. Первый байт - маркер прочтения. Одна из ниток ищет прочтённую запись, ищет непрочтённую за ней и переписывает её выше, а её первоначальное место маркирует как прочтённое. Если последняя запись в файле прочтённая, размер файла сокращается. После наведения порядка эта нить засыпает и просывается при чтении записи. И разумеется, доступ к файлу во время его дефрагментации должен быть синхронизирован. |
|||
|
||||
| barin_Student |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 488 Регистрация: 10.8.2007 Где: Казахстан , Алмат ы Репутация: 1 Всего: 2 |
Счас пробую разные методы , чуть позже отпишусь как зделал,
-------------------- Нехорошо блин!!! |
|||
|
||||
![]()
|
| Правила форума "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. |