@beduin01

Как происходит выделение памяти под читаемый файл?

Собственно чтобы прочитать файл, нужно выделить какую-то область памяти для него. А область мы можем выделить только зная размер файла. Так или нет?

Получается тогда нам нужно в начале размер файла прочитать, а потом уже все содержимое или как оно все происходит?
  • Вопрос задан
  • 193 просмотра
Пригласить эксперта
Ответы на вопрос 5
@abcd0x00
Получается тогда нам нужно в начале размер файла прочитать, а потом уже все содержимое или как оно все происходит?

Размер файла записан на диске (в файловой системе). Сам файл хранится в виде кусочков в разных местах диска. Кусочки связаны друг с другом по очереди (в каждом кусочке записано, где следующий кусочек).

Собственно чтобы прочитать файл, нужно выделить какую-то область памяти для него.

Чтобы прочитать файл, выделяется небольшой буфер, в который загружается часть файла. Если ты его прочитал, то в него же загружается следующая часть файла. Ты читаешь файл как бы через окно в виде буфера, которое скользит по файлу вперёд.

Файлы бывают огромные, даже больше, чем оперативная память, но ты их спокойно можешь читать.
Ответ написан
alsopub
@alsopub
Если вы планируете прочитать файл целиком - то да, сначала выяснить размер файла, выделить память, прочитать файл. Если читать построчно - достаточно выделить память под одну строку (предположительно самую длинную, если строка окажется длиннее - "довыделить").
Ответ написан
Foolleren
@Foolleren
Компас есть, копать не люблю...
а можно смапить файл в озу, и работать с ним как будто он там,
всю грязную работу по кешированию берёт на себя ОС
Ответ написан
Комментировать
Rou1997
@Rou1997
А как угодно, так и происходит, можно пропустить первые 1.000.000 байт файла, выделить 3 байта, считать 3 байта, и больше ничего не читать, так же и запись в файл, в базах данных только так.
Ответ написан
Комментировать
@cijiw
Не обязательно так.
Есть еще маппинг файлов в оперативную память.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы