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