Я имел дело с готовящейся проблемой и внезапно заставляет меня задуматься над этим вопросом ...
Может быть, это связано не только с FileStream, я хочу знать, как мы на самом деле физически добавляем двоичный файл в файл.
Я думаю, мой вопрос приведет две очереди:
- Как структурирована память жесткого диска?
- Как файл записать в физическую память?
Скажем, у меня есть текстовый файл, содержащий "ABCDEF", поэтому в физической памяти (на жестком диске) память должна содержать двоичный файл с буквами "ABCDEF" с двоичным файлом заголовка файла и т.д. (Фактически без заголовка для простого текстового файла?). ...
Так будет примерно так в физически 6 байтов, порядок зависит от типа процессора:
A B C D E F
01000001 01000010 01000011 01000100 01000101 01000110
Скажем, когда мы хотим добавить в файл букву «G», чтобы файл содержал 7 байтов:
A B C D E F G
01000001 01000010 01000011 01000100 01000101 01000110 01000111
Оба размера файла на диске физически должны 4,00 КБ.
Потому что, когда мы пишем букву G, все равно не превышает 4,00 КБ, поэтому у нас есть место для записи в пространство памяти 4,00 КБ.
Но когда мы добавим больше файлов в файл, при превышении 4,00 КБ будет использоваться 8,00 КБ.
Как двоичный файл, превышающий 4,00 КБ, записывается в память диска?
Записывает ли он указатель или что-то куда-то, объявляет индекс в памяти диска и записывает избыточный двоичный файл в новый адрес памяти?