Как файлы сохраняются? - PullRequest
       1

Как файлы сохраняются?

1 голос
/ 20 сентября 2011

Может кто-нибудь здесь сказать мне, как файлы обычно сохраняются на жестком диске?Содержимое представлено в двоичном значении, то есть в 1 и 0.Если да, можно ли распечатать эти 1 и 0, используя программу C?

Ответы [ 4 ]

3 голосов
/ 20 сентября 2011

Да, на самом низком уровне содержимое всех файлов - это двоичные биты и байты.Вы можете прочитать их, если откроете файл для чтения в двоичном режиме:

FILE * pFile;
pFile = fopen ("somefile.txt","rb");
...

Затем вы можете прочитать файл в байтовый буфер, используя fread, и распечататьсчитанные байты в нужном формате (например, "%x" для шестнадцатеричного) с использованием printf.

1 голос
/ 20 сентября 2011

Язык программирования C создает абстракцию, что файлы представляют собой потоки байтов. Что касается C, то байт состоит из количества бит (1 или 0 значений), равного CHAR_BIT.

То, хранит ли аппарат на самом деле байт в виде количества битов, не имеет значения для C, поскольку реализация C (в сочетании с ОС и т. Д.) Заставит его выглядеть так, как если бы он был. Если вы можете спроектировать носитель данных с множеством крошечных маленьких двоичных объектов, каждое из которых может находиться в любом из 256 состояний, тогда вы можете хранить 1 байт на каждый двоичный объект.

Но на самом деле, как магнитные, так и флэш-накопители имеют микроскопические структуры, соответствующие одному биту. Аппаратное обеспечение не обеспечивает прямой доступ к единственному биту, но они там есть. Вопрос о том, соответствует ли один бит на носителе памяти одному биту в файле, - это другое дело - и аппаратное обеспечение, и программное обеспечение файловой системы могут выполнять ряд операций над данными (сжатие, шифрование, дублирование RAID, разреженные файлы), которые делают все гораздо сложнее, чем просто «8 бит на диске равны одному байту файла».

1 голос
/ 20 сентября 2011

как файлы обычно сохраняются на жестком диске?

Способ хранения файлов зависит от базовой файловой системы.

Является ли содержимое в двоичном виде, то есть в 1 и 0.

В самом конце, все на вашем компьютере представлены 0 и 1, так что дажефайлы, да.

0 голосов
/ 20 сентября 2011

Конечно, так и есть - в Linux просто откройте /dev/sda1 (или любое другое блочное устройство, которое у вас есть; этот пример предназначен для первого раздела первого жесткого диска) и начните чтение; аналогично в других ОС.

Обратите внимание, что

  • вам понадобятся разрешения суперпользователя / администратора для такого низкоуровневого доступа к диску
  • обычно также существует файловая система, абстрагирующая хранилище от файлов - иными словами, файл размером 10 МБ не обязательно соответствует одной части диска размером 10 МБ: он может состоять из нескольких частей , он может быть сжат или зашифрован, или все эти
  • в распределенных файловых системах / сети / памяти файл может вообще не существовать на диске.

Следовательно, файл (как он выглядит, когда вы его обычно открываете) не обязательно выглядит так, как на диске (он может, но это не гарантировано, да и вообще нет смысла).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...