URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5099
[ Назад ]

Исходное сообщение
"Дозапись в файл"

Отправлено Al , 13-Июл-07 10:33 
Возможно ли дозаписать в файл начиная с определённой позиции, т.е. есть некоторый файл file.txt, есть величина=смещение, с этого момента надо сделать вставку. НЕОБХОДИМОЕ УСЛОВИЕ-вставку надо сделать не используя НИКАКИХ БУФЕРОВ, копирования частей файла или самого файла в другие файлы итд.
Например есть file.txt

Его содержимое
*123*451545487545451112154546yfgefvdvdnbvgdvfg3t567tegfhv36t*****************dfmkg+++++fjgkj
Смещение=8
Вставка=FFF
Результат должен быть

*123*451FFF545487545451112154546yfgefvdvdnbvgdvfg3t567tegfhv36t*****************dfmkg+++++fjgkj


Содержание

Сообщения в этом обсуждении
"Дозапись в файл"
Отправлено антигерой , 14-Июл-07 18:12 
Дозаписать в чистом виде в файл нельзя. Можно прочитать кусок файла до нужного места в промежуточный файл, потом туда сделать нужную запись и дозаписать последнюю часть файла.

А потом скопировать то что получилось - из промежуточного файла в нужный.
Делается это для того, чтобы не забивать оперативку массивом данных файла. т.е. чтобы не держать его в оперативке, ибо хyz знает - какой у него размер.


"Дозапись в файл"
Отправлено Al , 16-Июл-07 13:40 
>Дозаписать в чистом виде в файл нельзя. Можно прочитать кусок файла до
>нужного места в промежуточный файл, потом туда сделать нужную запись и
>дозаписать последнюю часть файла.
>
>А потом скопировать то что получилось - из промежуточного файла в нужный.
>
>Делается это для того, чтобы не забивать оперативку массивом данных файла. т.е.
>чтобы не держать его в оперативке, ибо хyz знает - какой
>у него размер.
Уже так и сделал, прочитал в умной книжке что дозапись в виде вставки невозможна "напрямую", хотя вот даже частичная перезапись по смещению реальна. Спасибо за ответ!


"Дозапись в файл"
Отправлено .org , 23-Июл-07 12:13 
>[оверквотинг удален]
>>дозаписать последнюю часть файла.
>>
>>А потом скопировать то что получилось - из промежуточного файла в нужный.
>>
>>Делается это для того, чтобы не забивать оперативку массивом данных файла. т.е.
>>чтобы не держать его в оперативке, ибо хyz знает - какой
>>у него размер.
>Уже так и сделал, прочитал в умной книжке что дозапись в виде
>вставки невозможна "напрямую", хотя вот даже частичная перезапись по смещению реальна.
>Спасибо за ответ!

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