Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2014, 23:26   #1
prog32bit
 
Регистрация: 16.09.2014
Сообщений: 5
Вопрос Удаление строки из файла

Доброго времени суток. Интересует вопрос по следующей теме:
Как удалить первую строку из файла. При этом файл может быть любого размера (например, 4 ГБ). А 4 ГБ подгружать в память не айс.
prog32bit вне форума Ответить с цитированием
Старый 16.09.2014, 23:32   #2
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

>> При этом файл может быть любого размера
TFileStream
indexx вне форума Ответить с цитированием
Старый 17.09.2014, 00:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Как удалить первую строку из файла. При этом файл может быть любого размера (например, 4 ГБ). А 4 ГБ подгружать в память не айс.
Учитывайте, что чудес не бывает, поэтому удаление (физическогое) строки из файла неминуемо приведёт к необходимости перезаписи всех даных, расположенных после данной строки (они "сдвинутся" к началу файла на размер удалённой строки).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2014, 15:36   #4
prog32bit
 
Регистрация: 16.09.2014
Сообщений: 5
По умолчанию

можете подсказать, как реализовать
prog32bit вне форума Ответить с цитированием
Старый 17.09.2014, 15:42   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну коль единовременно нельзя 4 Гб в память, то читайте и пишите в другое место порциями, попутно удаляя нужную строку. Будет долго. Просто с одним TFileStream получится только или обрезать файл с конца, или забить какой-то кусок файла другой информацией, теми же, например, двоичными нулями
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.09.2014, 15:55   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

prog32bit, так реализовать просто.
Открываете входной файл (можно через TFileStream), находите место окончания удаляемого с начала файла блока данных (конец удаляемой первой строки), устанавливаете указатель на первый байт после этого блока, пишете во новый (или временный файл) все данные. Закрываете исходный файл. При необходимости исходный файл удаляете (или переименовываете в .BAK), новый/временный переименовываете в имя изначального файла.
Профит.


p.s. сдвигать информацию прямо в файле конечно же можно, но это чревато потерей целостности исходного файла, если процесс (по любой причине) прервётся.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.09.2014, 17:35   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Файл какого формата содержимого: Текста или бинарного?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.09.2014, 17:39   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Очевидно же что текст.
Человек_Борща вне форума Ответить с цитированием
Старый 17.09.2014, 17:47   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Очевидно же что текст.
Сколько же у него там текста тогда? Роман "Война и мир" и то в электроном виде весит меньше.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.09.2014, 17:53   #10
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Думаю, что 4gb, это запас прочности. Явно не бинар. Если в бинаре тупо снести первую строку, то он умрёт, будь то программа, или медиафайл.
indexx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
УДаление строки из файла методом создания временного файла. dykatob Общие вопросы C/C++ 3 28.05.2011 01:46
Удаление строки из файла Flippp Общие вопросы C/C++ 10 12.11.2009 19:36
Удаление строки из файла. Arhe Общие вопросы .NET 4 03.11.2009 12:12
Удаление строки из файла Македонский Общие вопросы Delphi 5 29.08.2007 15:40