Файловая система
Для выполнения заданий по данной теме нужно знать, что в иерархических файловых системах файлы на дисках объединяются в каталоги (папки). Главный каталог диска называют корневым (или просто корнем) и обозначают заглавной латинской буквой, за которой следует двоеточие и знак «\». Адресом каталога называют перечисление через «\» всех каталогов, начиная с корневого, в которые нужно войти, чтобы попасть в этот, например:
C:\Users\Vasya\MyFolder
Адрес файла состоит из адреса каталога, в котором он находится, и полного имени самого файла, например:
C:\Users\Vasya\MyFolder\referat.docx
Для обозначения группы файлов используют маски, которые помимо разрешенных для имени файлов символов могут содержать два специальных символа:
- символ «*» обозначает любое количество любых символов (в том числе и ноль);
- символ «?» обозначает ровно один любой символ.
Если требуется вывести файлы отсортированными по имени, то сравнение идет по кодам символов, входящих в имя или в расширение.
Рассмотрим несколько примеров заданий.
Пример 1.
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, среди которых также могут встречаться следующие символы:
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.
В каталоге находятся 6 файлов:
mustard.map
mustard.mp3
catarsis.mp4
vitarcon.mp4
taras.mp3
star.mp3
Ниже представлено восемь масок. Сколько среди них таких, которым соответствуют ровно четыре файла из данного каталога?*tar*.mp* *?tar?*.mp? ?*tar*.mp?* *t*r*?.m?p* ???*???.mp* ???*???.m* *a*.*a* *s*.mp*
Решение.
Нам придётся проверить каждое имя файла на соответствие каждой маске.
Рассмотрим каждую маску:
Маске *tar*.mp* соответствуют 5 файлов: все кроме первого,
Маске *?tar?*.mp? соответствуют 3 файла: mustard.mp3, catarsis.mp4, vitarcon.mp4
Маске ?*tar*.mp?* соответствуют 4 файла: mustard.mp3, catarsis.mp4, vitarcon.mp4, star.mp3
Маске *t*r*?.m?p* соответствует 1 файл: mustard.map
Маске ???*???.mp* соответствуют 3 файла: mustard.mp3, catarsis.mp4, vitarcon.mp4
Маске ???*???.m* соответствуют 4 файла: mustard.map, mustard.mp3, catarsis.mp4, vitarcon.mp4
Маске *a*.*a* соответствует 1 файл: mustard.map
Маске *s*.mp* соответствуют 4 файла: mustard.mp3, catarsis.mp4, taras.mp3, star.mp3
Итого: 3 маски, которым соответствуют ровно четыре файла из данного каталога.
Чтобы было удобнее отмечать, какой файл каким маскам соответствует, удобно сделать это в таблице такого вида:mustard.map mustard.mp3 catarsis.mp4 vitarcon.mp4 taras.mp3 star.mp3 *tar*.mp* *?tar?*.mp? ?*tar*.mp?* *t*r*?.m?p* ???*???.mp* ???*???.m* *a*.*a* *s*.mp*
Ответ: 3
Пример 2.
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, какое из указанных имен файлов удовлетворяет маске: F??tb*.d?*- Fructb.d 2) Feetball.ddd3) Football.mdb4) Futbol.doc
Решение.
Посмотрим внимательно на данную маску: F??tb*.d?*
Эта запись означает, что имя файла должно начинаться на «F», после идут ровно две буквы, после идут буквы «tb», после до точки может идти любое количество символов (в том числе ни одного). После точки в расширении первой должна идти буква «d», еще как минимум один символ, и любое количество символов (в том числе и ноль).
Начнем проверять каждое имя на соответствие указанной маске.
Fructb.d_ | Не подходит, между «F» и «tb» больше 2 символов, в расширении меньше 2 символов |
Feetball.ddd | Подходит |
Football.mdb | Не подходит, первый символ в расширении не «d» |
Futbol.doc | Не подходит, между «F» и «tb» меньше 2 символов |
Получается, что верный ответ под номером 2.
Ответ: 2.
Пример 3.
Пользователь, перемещаясь из одного каталога в другой, последовательно посетил каталоги ACADEMY, COURSE, GROUP, Е:\, PROFESSOR, LECTIONS. При каждом перемещении пользователь либо спускался в каталог на уровень ниже, либо поднимался на уровень выше. Каково полное имя каталога, из которого начал перемещение пользователь?
1) Е:\PROFESSOR\LECTIONS\ACADEMY
2) Е:\ACADEMY\COURSE\GROUP
3) E:\ACADEMY
4) Е:\GROUP\COURSE\ACADEMY
Решение.
Видим, что в списке посещенных каталогов есть корневой – Е:\. Значит, предыдущий каталог был внутри корневого, т.е. пользователь поднимался наверх, значит, адрес, из которого пользователь начал перемещение, начинается с Е:\GROUP.
Получается, что до того, как пользователь дошел до Е:\, он все время поднимался вверх (очевидно, что если бы это было не так, то какие-то папки бы повторялись: представьте, что вы зашли в какую-то папку, потом вышли из нее, чтобы дойти до корневого диска) Значит, полный адрес выглядит так:
Е:\GROUP\COURSE\ACADEMY
Правильный ответ находится под цифрой 4.
Ответ: 4