B
B
beduin012016-06-09 21:40:28
Programming
beduin01, 2016-06-09 21:40:28

How is memory allocated for a readable file?

Actually, to read a file, you need to allocate some memory area for it. And we can select the area only knowing the file size. So or not?
It turns out then that we need to read the file size at the beginning, and then all the content, or how does it all happen?

Answer the question

In order to leave comments, you need to log in

5 answer(s)
A
abcd0x00, 2016-06-11
@abcd0x00

Получается тогда нам нужно в начале размер файла прочитать, а потом уже все содержимое или как оно все происходит?

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

Алексей, 2016-06-09
@alsopub

Если вы планируете прочитать файл целиком - то да, сначала выяснить размер файла, выделить память, прочитать файл. Если читать построчно - достаточно выделить память под одну строку (предположительно самую длинную, если строка окажется длиннее - "довыделить").

Василий, 2016-06-09
@Foolleren

а можно смапить файл в озу, и работать с ним как будто он там,
всю грязную работу по кешированию берёт на себя ОС

R
Rou1997, 2016-06-09
@Rou1997

А как угодно, так и происходит, можно пропустить первые 1.000.000 байт файла, выделить 3 байта, считать 3 байта, и больше ничего не читать, так же и запись в файл, в базах данных только так.

C
cijiw, 2016-06-12
@cijiw

Не обязательно так.
Есть еще маппинг файлов в оперативную память.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question