Проблема есть файл и в нем нужно заменить блок. Файл большой. Гуглением проблема решается считыванием файла построчно в переменную, замена нужной инфы и затем эта вся инфа сразу записывается в файл. Для большого файла это не выход. Далее можно еще делать при открытии файла смещение по байтам. Тут вроде всё норм. Но есть существенный минус - идет перезапись текущих блоков, причем вся структура едет. Грубо говоря не получается середину файла перезаписать. Может с текстовым файлом перезапись одной строки и пошла бы, но тут не идет.
Подскажите какие здесь есть выходы?
в целях экономии памяти можно разбить файл на n (нет, на n мало, на m) файлов, каждый из которых обрабатывать отдельно, а затем склеить. В остальном Лентюй прав - хвост все равно отдельно лепить.
Да, была такая мысль. Разбить на 3и части. Начало, блок нужного текста и затем конец. Но в принципе это одно и тоже - читать весь файл построчно и записывать в другой. На чтение и запись построчно много ресурсов не тратиться.
Елена, не факт что это будет быстрее / производительнее, все зависит от структуры, тут только обладая полным описанием задачи что-то конкретное можно советовать.
имелось в виду открывать именно нарезанные файлики. Принцип - ищем начало блока читая построчно, если за 2-3 мегабайта данных не нашли - записали прочитанное в файл, ищем дальше. Нашли - ищем конец блока, пишем блок в файл, повторяем. Файлики с нужным блоком можно пометить отдельно и потом только их обработать.