Мегаобучалка Главная | О нас | Обратная связь


Копирование, переименование и перемещение файла



2015-11-07 846 Обсуждений (0)
Копирование, переименование и перемещение файла 0.00 из 5.00 0 оценок




При переименовании файла изменяются только значения полей "Имя" и "Расширение" соответствующей регистрационной записи каталога.

Процедура копирования файла реализуется последовательным выполнением рассмотренных выше процедур чтения, записи и переименования.

Процедура перемещения файла между двумя каталогами одного логического диска сводится к перемещению соответствующей регистрационной записи. Если же файл перемещается на другой логический диск, то он "удаляется" с одного диска и "копируется" на другой.

 

Некоторые особенности 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:

 

слово
смещение +00 +01 +02 +03 +04 +05 +06 +07
значение F0 FF FF FF 0F


Рисунок 4.

Меняем местами байты нулевого слова (F0FF -> FFF0) и записываем результат в самой правой части страницы:

FF F0

Меняем местами байты первого слова (FF03 -> 03FF) и записываем результат слева от сделанной нами записи:

FF FF F0

Меняем местами байты второго слова (4000 -> 0040) и записываем результат слева от сделанной нами записи:

FF FF F0

Меняем местами байты третьего слова (FF0F -> 0FFF) и записываем результат слева от сделанной нами записи:

F FF 00 40 03 FF FF F0

Теперь разделяем полученную нами цепочку на трехразрядные числа, начиная с правой части:

 

Элемент FAT ->
Значение -> FFF FFF FF0


Читаем справа налево. Номер элемента FAT соответствует номеру кластера. На дискете первые два элемента FAT (первые три байта) занимает служебная информация. Ссылки на кластеры, которые содержат файлы и каталоги, начинаются со второго элемента FAT (с 3-го байта - и не забудьте, что отсчет ведется с нуля). В нашем примере файл занимает 3 кластера. Второй элемент FAT содержит число 3. Это значит, что продолжение цепочки нужно искать в 3-м элементе. 3-й элемент содержит число 4, т.е. цепочка продолжается. В 4-м элементе содержится признак конца файла - число FFF. Так как число FFF означает конец файла, то ноль, который "затесался" к нам из последнего слова, нас уже не интересует. Если мы запишем на дискету еще один файл, то вместо нуля может появиться какое-нибудь другое число.

Параметры стандартной дискеты

Дискета стандартного формата (1,4 МБ) имеет следующие параметры:

Таблица 5. Параметры стандартной дискеты.

Параметр Значение
Размер сектора 512 Б
Секторов в кластере
Количество секторов перед первой FAT
Количество FAT
Максимальное число элементов корневого каталога
Общее число секторов
Количество секторов в одной FAT
Количество секторов на дорожке
Количество поверхностей
Количество спрятанных секторов
Емкость 1457664 Б


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

1457664/512 = 2847

Но мы не ищем простых путей! Поэтому, используя вышеприведенные параметры, которые можно просмотреть с помощь программы DiskEdit (не забывайте "переворачивать" байты, если данные имеют размер слова), попробуем получить тот же результат. Итак,

  • У нас есть один загрузочный сектор, а параметр "Количество секторов перед первой FAT" равен 1. Это значит, что перед FAT только этот один загрузочный сектор и расположен.
  • Параметр "Количество секторов в одной FAT" равен 9 и параметр "Количество FAT" равен 2. То есть две копии FAT занимают на дискете 18 секторов (9*2 = 18).
  • Параметр "Максимальное число элементов корневого каталога" равен 224. Каждый элемент корневого каталога занимает 32 Б. Умножаем 224 на 32: 224*32 = 7168. Делим это число на 512 (размер сектора) и получаем число 14. То есть корневой каталог занимает 14 секторов.
  • Подсчитываем количество секторов, занимаемых служебной информацией:
    1(загрузочный) + 18(FAT) + 14(корень) = 33.
  • Осталось отнять от общего количества секторов (2880) полученное нами число: 2880 - 33 = 2847. То есть 2847 - это количество секторов, доступных для хранения пользовательских файлов.

Получили тот же результат. Т.к. любой файл занимает на диске не менее одного кластера, а на дискете стандартного формата в кластере содержится один сектор, то получается, что максимально возможное количество файлов на такой дискете равно 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-11-07 846 Обсуждений (0)
Копирование, переименование и перемещение файла 0.00 из 5.00 0 оценок









Обсуждение в статье: Копирование, переименование и перемещение файла

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (846)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)