Как организовать запись в файл больших объёмов?
Добавлено: 11.03.2016 11:54:06
При обработке большого объёма данных приходится накапливать их в динамическом массиве, а затем переписывать в файл. Для этого использую оттдельный поток, а в нём TFileStream. Сразу же после передачи данных в FileStream я создаю новый динамический массив, куда записываю обрабатываемые данные и по заполнению этого массива вновь таким же образом переписываю их в файл.
Проблема возникает в том, что обработка данных происходит немного быстрее, чем запись их в файл и при попытке открыть очередной TFileStream возникает ошибка: "попытка доступа к занятому файлу". Есть ли какие-то способы решения такой проблемы?
Да и сама идея с периодическим открытием-закрытием потоков мне не совсем нравится. Вот что-нибудь типа большой бочки, куда периодически вылевается по ведру воды, а из неё через краник вода постоянно льётся в умывальник. Если в бочке слишком много воды, то она сообщает - "не вылевай ведро, я переполнена", если вообще нет, то ничего не происходит, просто "в кране нет воды...". На англоязычных сайтах встречал идея о связке TBufStream и TFileStream, но как это сделать - ничего конкретного (на таком же уровне, как выше с бочкой воды).
Проблема возникает в том, что обработка данных происходит немного быстрее, чем запись их в файл и при попытке открыть очередной TFileStream возникает ошибка: "попытка доступа к занятому файлу". Есть ли какие-то способы решения такой проблемы?
Да и сама идея с периодическим открытием-закрытием потоков мне не совсем нравится. Вот что-нибудь типа большой бочки, куда периодически вылевается по ведру воды, а из неё через краник вода постоянно льётся в умывальник. Если в бочке слишком много воды, то она сообщает - "не вылевай ведро, я переполнена", если вообще нет, то ничего не происходит, просто "в кране нет воды...". На англоязычных сайтах встречал идея о связке TBufStream и TFileStream, но как это сделать - ничего конкретного (на таком же уровне, как выше с бочкой воды).