Копирование, переименование и перемещение файла
При переименовании файла изменяются только значения полей "Имя" и "Расширение" соответствующей регистрационной записи каталога. Процедура копирования файла реализуется последовательным выполнением рассмотренных выше процедур чтения, записи и переименования. Процедура перемещения файла между двумя каталогами одного логического диска сводится к перемещению соответствующей регистрационной записи. Если же файл перемещается на другой логический диск, то он "удаляется" с одного диска и "копируется" на другой.
Некоторые особенности FAT-12 Программа DiskEdit нами уже упоминалась. Также упоминалось, что пользоваться ею нужно очень осторожно. По умолчанию обычно установлен режим "Только чтение". Если вы не вполне уверены, что правильно понимаете и представляете себе структуру диска, лучше этот режим не отключайте. Далее мы разберем пример использования этой программы для чтения дискеты (1,4 МБ), потому как начинать эксперименты лучше с дискетой. Дискета имеет файловую систему FAT-12. Для начала несколько самых основных понятий для тех, кто впервые сталкивается с двоичной системой счисления: Бит - это один разряд в двоичном числе. Например, двоичное число 1001 содержит 4 бита (четырехразрядное двоичное число). Байт - это восемь битов (байт: 10100010 - двоичное число или А2 - шестнадцатиричное число или 162 - десятичное) Слово - это два байта (1010001010100010b = A2A2h = 41636) Смещение - это смещение от относительного адреса. Например, запустив программу DiskEdit, вы увидели следующее: 00000000: 11 12 34 А8 00 12 67 00 - 00 00 00 00 00 00 00 ВВ 00000010: 10 02 3В А0 05 33 77 00 - 00 00 00 00 00 00 00 00 Относительный адрес в первой строке равен 0 (00000000). Следующая за ним шестнадцатиричная цифра 11 находится по смещению +00 (0+00=0), цифра 12 - по смещению +01 (0+01=1) и т.д. Последняя цифра в этой строке (BB) находится по смещению +0F (0+0F = Fh = 15). Во второй строке по смещению +06 находится число 77. ОБРАТИТЕ ВНИМАНИЕ: число 77 находится по смещению +06 относительно второй строки, и по смещению +16h относительно первой строки. С этими нюансами вам придется постоянно сталкиваться - привыкайте. Самое интересное здесь для нас - это представление слова данных в памяти компьютера и чтение этих данных. Например, при просмотре диска программой DiskEdit, мы увидели такое слово данных (два смежных байта): 12 А3 Если просто перевести его в десятичный формат, то получим: 12А3 = 4771 это правильный перевод. Однако нам так делать нельзя. Из-за некоторых особенностей компьютера перед тем как перевести шестнадцатиричное число в десятичное, нам нужно поменять байты местами. Тогда получим: А312 = 41746 А это уже правильное число. Причин этих премудростей я объяснять не буду - уж поверьте на слово, что так оно все и есть. Но еще смешнее будет разбираться (с учетом вышесказанного) с файловой системой FAT-12. Потому как здесь мы будем иметь дело с 12-битными блоками данных. Т.е. каждый такой блок больше одного байта, но меньше слова. При такой системе очень легко запутаться и разобраться где там какой кластер/сектор и т.д. Предлагаю следующий метод (я его сам придумал, поэтому, быть может, он не является самым простым). Не забываете, что в каждом слове данных нам нужно менять местами байты. Допустим, что мы имеем следующий участок FAT:
Меняем местами байты нулевого слова (F0FF -> FFF0) и записываем результат в самой правой части страницы: FF F0 Меняем местами байты первого слова (FF03 -> 03FF) и записываем результат слева от сделанной нами записи: FF FF F0 Меняем местами байты второго слова (4000 -> 0040) и записываем результат слева от сделанной нами записи: FF FF F0 Меняем местами байты третьего слова (FF0F -> 0FFF) и записываем результат слева от сделанной нами записи: F FF 00 40 03 FF FF F0 Теперь разделяем полученную нами цепочку на трехразрядные числа, начиная с правой части:
Параметры стандартной дискеты Дискета стандартного формата (1,4 МБ) имеет следующие параметры: Таблица 5. Параметры стандартной дискеты.
1457664/512 = 2847 Но мы не ищем простых путей! Поэтому, используя вышеприведенные параметры, которые можно просмотреть с помощь программы DiskEdit (не забывайте "переворачивать" байты, если данные имеют размер слова), попробуем получить тот же результат. Итак,
Получили тот же результат. Т.к. любой файл занимает на диске не менее одного кластера, а на дискете стандартного формата в кластере содержится один сектор, то получается, что максимально возможное количество файлов на такой дискете равно 2847. Логично? Да! Но не правильно. Я и сам на этом в контрольной "прокололся". Здесь есть несколько нюансов. Как говорит наш преподаватель по информатике: "Дискета - это не просто мешок с файлами". Дело в том, что мало просто заполнить файлами эти 2847 секторов. Надо ведь к этим файлам еще как-то обращаться. А для этого в корневом каталоге имеется набор регистрационных записей (см. Корневой каталог (Root Directory)). А максимальное число элементов корневого каталога, как сказано выше, равно 224. Вот и получается, что на дискету (в корень) можно записать не более 224 файлов. Ну а если есть необходимость записать большее количество файлов, то в "корень" записывают, например, 223 файла. А вместо 224-го записывают подчиненный каталог, который будет иметь уже свою структуру регистрационных записей. В него можно будет записать новые файлы (см. Подчиненные каталоги). Читаем файл с дискеты Ну а теперь попробуем пройти всю процедуру чтения файла (см."Алгоритмы выполнения типовых файловых операций"). Только чуть-чуть ее упростим - пусть на нашей дискете будет только один файл с именем NAME.TXT. В корневом каталоге дискеты (физический диск А) нам нужно найти соответствующую запись. Однако где ж его этот корневой каталог искать? А корневой каталог следует сразу за областью FAT. На стандартной дискете FAT занимает 18 секторов (две копии FAT по 9 секторов каждая) и еще 1 сектор занимает загрузочная область (см. табл.5). Следовательно, корневой каталог начинается с 20-го сектора. Но как нам найти этот 20-й сектор? Дискета читается следующим образом: сначала читается 0-я дорожка, 0-я сторона, 1-й сектор (нумерация секторов начинается с единицы). Затем 0-я дорожка, 0-я сторона, 2-й сектор и т.д. до 18-го сектора. Затем читается 0-я дорожка, 1-я сторона, 1-й сектор, 2-й сектор и т.д. до 18-го. Затем читается 1-я дорожка, 0-я сторона, 1-й сектор, 2-й сектор и т.д. до 18-го и т.д. и т.п. Т.е. 20-й сектор у нас будет на 0-й дорожке, 1-й стороне во втором секторе. Чтобы сразу перейти к этому сектору в меню "Object" программы DiskEdit выберите пункт "Phisical Sector" и укажите в поле "Cylinder" значение "0", в поле "Side" значение 1, а в поле "Sector" значение 2 и нажмите Enter. Вот вы и перешли в корневой сектор дискеты. Можете "декодировать" находящуюся там информацию, используя таблицу 2. Не забывайте "переворачивать" байты, если данные занимают слово. Теперь находим в корневом каталоге наш файл (NAME.TXT) и смотрим номер начального кластера. Чтобы посмотреть сам файл, нужно посмотреть цепочку FAT, которая начинается с этого кластера, т.е. перейти непосредственно к этому кластеру, а затем посмотреть остальные кластеры в цепочке. Обычно (хотя и не всегда) они следуют друг за другом. Кластеры начинаются сразу за корневым каталогом. Корневой каталог стандартной дискеты (1,4 МБ) занимает 14 секторов. 14+19=33. Т.е. с 34 сектора у нас начинается область пользовательских данных (подробности см. в "Вычисление номеров дорожки/поверхности/сектора"). Если нужный нам файл находится не в корневом каталоге, то сначала находим номер начального кластера каталога, в котором находится файл. Затем переходим в этот кластер и ищем там имя нужного файла. Смотрим номер начального кластера для этого файла и т.д. Соглашение об именах Файлы и подчиненные каталоги в MS-DOS должны иметь имена, содержащие не более 8 символов (английских букв, цифр и некоторых других символов), и могут иметь расширение (а могут и не иметь), содержащее не более 3-х символов. В ПОЛНОМ имени файла разрешается использовать только следующие символы: A-Z 0-9 $ & # ~ ( ) - % ! _ ^ В ПОЛНОМ имени файла запрещается использовать все остальные символы! ЗАПРЕЩАЕТСЯ В ПОЛНОМ имени файла использовать ПРОБЕЛ! Примеры допустимых имен файлов: Format.com, Read.me, MyFyle.txt, 28-03-96.doc, 123.45 Примеры НЕ допустимых имен файлов: 123456789.txt, aa?.doc, 35*.? It.F.doc, .txt
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (883)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |