![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Всем привет. У меня такая ситуация: записываю в файл заполненную структуру. Потом пользователь "удаляет" ее путем обнуления данных, при этом в файле со временем накапливается много "пустых" структур.
Можно ли физически удалить данные из файла?. Как вариант, проверять перед записью в файл наличие пустых структур и записывать на это место новую. Заранее спасибо!
Желание тысяча возможностей, нежелание - тысяча причин
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]() Цитата:
П.С. Отвечать не надо, т.к. вопросы 100500 раз отвечены... даже недавно тут на форуме было. |
|
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Впрочем - в цикле считывай в новый файл неудаленные записи, пропуская удаленные. После старый файл сотри а новый переименуй.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
![]()
Да, согласен. Однако, у меня файл с одним именем используется во многих функциях программы, как тогда быть?
Желание тысяча возможностей, нежелание - тысяча причин
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Во-первых, это долго. А во-вторых, негибко. Лучше в начале работы загрузить "файл" в память, и работать с кучкой байтов, не трогая ндд и не дергая систему каждый раз из-за всяких мелочей. Надеюсь, ты знаешь, как удалять/добавлять/перемещать байты в обычном контейнере данных? Это намного проще, чем мудохаццо с "файлами". "файл, который на жестком диске" ты используешь один раз при старте, и один раз по окончании работы. Все остальное время - работаешь с памятью Пихать в файл "пустоту" - не самое оптимальное решение. |
|
![]() |
![]() |
![]() |
#6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Если речь идет о нескольких потоках, одновременно пытающихся работать с файлами то тут спасут системы транзакций и синхронизации доступа к файлу. Короче ты по факту получается свое СУБД пишешь. Рекомендую придерживаться общих принципов, если конечно это не узконаправленная система, требующая именно нестандартного подхода в силу задачи.
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() |
![]() |
![]() |
![]() |
#8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Дыры как ни странно ускоряют доступ - если хранишь карты быстрого доступа типа индексов то дыры позволяют поддерживать скорость доступа к данным. А если фрагменты уберешь то придется и карты перестраивать. Не исключено что автор придет к модели индексации в своем приложении, и это будет лучший выход чем чистка файлов-чанков, содержащих данные.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Дыры здесь - для ускорения работы (незачем экономить байты, если работать нужно с гигабайтами). Однако, СУБД не делают дырок по поводу и без повода. Все что только возможно - берется в память. Нет ни одной причины держать в памяти дырки, и ни одной причины сохранять дырки обратно в файл. хранилище на жестких дисках - это всего лишь хранилища и не более того. Источником данных для различных операций является память. СУБД лишь подгружает с диска время от времени те данные, которые здесь и сейчас еще не были загружены ранее. И кэширует все что только можно в памяти, что бы лишний раз не дергать хранилище. |
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление структуры из файла | Axrik | Общие вопросы C/C++ | 1 | 09.06.2012 11:20 |
Запись структуры из файла | Evgeniy21 | Общие вопросы C/C++ | 2 | 15.05.2012 13:54 |
Чтение структуры из файла! | Olegzxc | Общие вопросы C/C++ | 1 | 01.12.2011 00:40 |
УДаление строки из файла методом создания временного файла. | dykatob | Общие вопросы C/C++ | 3 | 28.05.2011 01:46 |
Удаление(добавление) поля из(в) структуры | kilgoreq | Помощь студентам | 0 | 22.02.2011 00:59 |