Мне уже давно интересно, как работает потоковая передача файлов? При потоковой передаче файлов я имею в виду доступ к частям файла без загрузки всего файла в память.
Я (верю) знаю, что классы С++ (i|o)fstream
делают именно это, но как это реализовано? Возможно ли реализовать потоковое воспроизведение файлов?
Как он работает на низком уровне C/С++ (или на любом языке, поддерживающем потоки файлов)? Выполняют ли функции C fopen
, fclose
, fread
, а указатель FILE*
уже заботится о потоковой передаче (т.е. Не загружает весь файл в память)? Если нет, то как вы будете читать непосредственно с жесткого диска и есть ли такой объект alread, реализованный в C/С++?
Любые ссылки, подсказки, указатели в правильном направлении уже будут очень полезны. Я googled, но, похоже, Google не совсем понимает, что мне нужно...
Ninja-Edit. Если кто-нибудь знает что-либо о том, как это работает на уровне сборки/машинного кода, и если это возможно реализовать самостоятельно или если вы должны полагаться на системные вызовы, это будет здорово.:) Не требование для ответа, хотя ссылка в правильном направлении была бы приятной.