Инфознайка
Главная

Информация вокруг нас

Виды информации
Измерения информации
Алфавитный подход
Содержательный подход
Файловая система
Кодирование графики
Кодирование звука
Скорость передачи
Электронная таблица Excel
Графы
Система счисления
Кодирование информации
Логика
Адресация в Интернете
Поиск в Интернете
Алгоритмы
Кумир
Массивы

Тема: Файловая система

Коротко о главном

Файл — это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти.

Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и т. д.). Собственно имя файлу дает пользователь, а тип файла обычно задается программой автоматически при его создании.

Тип файла

Расширение

Исполняемые программы

exe, com

Текстовые файлы

txt, rtf,

Графические файлы

bmp, gif, jpg, png, pds

Web-страницы

htm, html

Звуковые файлы

wav, mp3, midi, kar, ogg

Видеофайлы

avi, mpeg

Код (текст) программы на языках программирования

bas, pas, cpp

В различных операционных системах существуют различные форматы имен файлов. В операционной системе MS-DOS собственно имя файла должно содержать не более восьми букв латинского алфавита и цифр, а расширение состоит из трех латинских букв, например: proba.txt

В операционной системе Windows имя файла может иметь до 255 символов, причем допускается использование русского алфавита, например:
Единицы измерения информации.doc

Файловая система

На каждом носителе информации (гибком, жестком или лазерном диске) может храниться большое количество файлов. Порядок хранения файлов на диске определяется установленной файловой системой.

Файловая система - это система хранения файлов и организации каталогов.

Для дисков с небольшим количеством файлов (до нескольких десятков) удобно применять одноуровневую файловую систему, когда каталог (оглавление диска) представляет собой линейную последовательность имен файлов. 

Если на диске хранятся сотни и тысячи файлов, то для удобства поиска файлы организуются в много уровневую иерархическую файловую систему, которая имеет «древовидную» структуру.

Начальный, корневой, каталог содержит вложенные каталоги 1-го уровня, в свою очередь, в каждом из них бывают вложенные каталоги 2-го уровня и т. д. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.

Путь к файлу.

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

Например, путь к файлам на рисунке можно записать так:

C:\basic\

C:\Музыка\Пикник\

Полное имя файла.

Путь к файлу вместе с именем файла называют полным именем файла.

Пример полного имени файлов:

C:\basic\prog123.bas

C:\Музыка\Пикник\Иероглиф.mp3

Маски имени файлов:

Для групповых операций с файлами (например, для поиска файлов) используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность

Пример задания:

Перемещаясь из одного каталога в другой, пользователь последовательно посетил каталоги  DOC, USER, SCHOOL, A:\, LETTER, INBOX. При каждом перемещении пользователь либо спускался в каталог на уровень ниже, либо поднимался на уровень выше. Каково полное имя каталога, из которого начал перемещение пользователь?

1)  A:\DOC

2)  A:\LETTER\INBOX

3)  А:\SCHOOL\USER\DOC

4)  А:\DOC\USER\SCHOOL

Решение:

1)      сразу отметим, что здесь предполагается, что пользователь не переходил на другой диск;

2)      в задачах, где нужно определить полный адрес файла или каталога, нужно начинать с поиска имени диска, в данном случае каталог находится на диске A:\ (так обозначается корневой каталог)

3)      поскольку в списке посещенных каталогов  перед  A:\ стоит SCHOOL, пользователь  мог попасть в корень диска A:\ только через каталог SCHOOL, поэтому адрес стартового каталога начинается с A:\SCHOOL

4)      так как среди предложенных вариантов только один удовлетворяет этому условию, можно остановиться (правильный ответ 3), однако, давайте все же доведем процедуру до конца, это позволит выяснить некоторые интересные моменты, которые не сработали здесь, но могут сработать в других задачах

5)      как пользователь попал в каталог SCHOOL? по условию он мог как подниматься, так и спускаться по дереву каталогов

6)      явно он не мог спуститься из USER в SCHOOL, потому что SCHOOL находится в корневом каталоге и каждый каталог имеет только одного «родителя»; значит, пользователь поднялся из USER в SCHOOL, и начальная часть полного адреса  А:\SCHOOL\USER

1)      аналогично можно доказать, что пользователь поднялся в каталог USER из каталога DOC

2)      таким образом, мы доказали, что правильный ответ – 3.

Возможные ловушки и проблемы:

·    можно забыть, что названия каталогов в полном имени перечисляются в порядке входа в них, начиная от корневого;  пользователь выходил из каталогов, поднимаясь к корню диска A:\, поэтому проходил каталоги в обратном порядке (на эту ошибку рассчитан неверный ответ А:\DOC\USER\SCHOOL)

·    можно перепутать каталог, из которого вышел пользователь, и каталог, где он в конечном счете оказался  (на эту ошибку рассчитан неверный ответА:\LETTER\INBOX)

·    в условии есть лишние данные, которые только запутывают дело; например, имена каталогов  LETTERINBOX никак не влияют на ответ, потому что пользователь попал в них уже после выхода в корневой каталог диска  A:\, то есть, пройдя весь путь исходного каталога в обратном порядке

 Еще пример задания:

Определите, какое из указанных имен файлов удовлетворяет маске:   ?hel*lo.c?*

1) hello.c      2) hello.cpp         3) hhelolo.cpp              4) hhelolo.c

Решение:

1)      будем проверять соответствие файлов маске по частям, записывая результаты в таблицу

2)      начнем с первой части маски, «?hel»; эта часть означает, что перед сочетанием «hel» в начале имени стоит один любой символ;

3)      сразу видим, что первые два имени не подходят (начинаются прямо с «hel», без стартового символа), отмечаем их крестиком в таблице и больше не рассматриваем:

 

 

?hel

hello.cp

×

hello.cpp

×

hhelolo.cpp

hhelolo.cpp

hhelolo.c

hhelolo.c

желтым и фиолетовым маркером  в таблице выделены соответствующие части маски и имен файлов (где есть совпадение)

4)      для двух последних имен проверяем второй блок маски: после «hel» должна быть цепочка «lo.c», или вплотную (и это возможно!) или через произвольную «вставку», на которую указывает звездочка в маске; видим, что оба имени прошли проверку:

 

 

?hel

?hel*lo.c

hello.cp

×

 

hello.cpp

×

 

hhelolo.cpp

hhelolo.cpp

hhelolo.cpp

hhelolo.c

hhelolo.c

hhelolo.c

5)      последняя часть маски, «?*», означает, что после «lo.c» должен стоять по крайне мере один любой символ (на это указывает знак «?»); проверяя это правило, обнаруживаем, что для последнего  имени, «hhelolo.c», маска не подходит, поскольку после «lo.c» ни одного символа нет:

 

 

?hel

?hel*lo.c

?hel*lo.c?*

hello.cp

×

 

 

hello.cpp

×

 

 

hhelolo.cpp

hhelolo.cpp

hhelolo.cpp

hhelolo.cpp

hhelolo.c

hhelolo.c

hhelolo.c

×

6)      таким образом, правильный ответ – 3.

Возможные ловушки и проблемы:

·    можно забыть, что звездочка «*» может соответствовать и пустой последовательности; например, в рассмотренной задаче имя «hhelolo.cp»также соответствует маске

·    можно забыть, что знак «?» НЕ может соответствовать пустой последовательности, а заменяет ровно 1 символ

Проверочные задания

  1. В некотором каталоге хранился файл Задача5. После того, как в этом каталоге создали подкаталог и переместили в созданный подкаталог файл Задача5, полное имя файла стало Е:\Класс9\Физика\Задачник\Задача5. Каково было полное имя этого файла до перемещения?

    Е:\Физика\Задачник\Задача5
    Е:\Физика\Задача5
    Е:\Класс9\Задачник\Задача5
    Е:\Класс9\Физика\Задача5

  2. В некотором каталоге хранится файл Список_литературы.txt. В этом каталоге создали  подкаталог с именем 10_CLASS и переместили в него файл Список_литературы.txt. После чего полное имя файла стало
      
    D:\SCHOOL\PHYSICS\10_CLASS\Список_литературы.txt.
    Каково пол­ное имя каталога, в котором хранился файл до перемещения?
      
     

    D:\SCHOOL\PHYSICS\10_CLASS
    D:\SCHOOL\PHYSICS
    D:\SCHOOL
    SCHOOL

  3. Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, какое из указанных имен файлов удовлетворяет маске: d?cf*.jp*g

    dscf3456.jpeg
    dcf1234.jpg
    dsscf6754.jpg
    dcsf1111.jpeg

  4. Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, какое из указанных имен файлов удовлетворяет маске: re*_a?09.do?

    refa-09.doc
    ref_a_09.do 
    refe_a09.doc
    ref_a_09.dot


  5. Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, по какой из масок будет выбрана указанная группа файлов  make.cpp, name.c, age.pc, name.cpp  

    *a*e.?
    a?e.*
     *a?e.*
    ?a?e.*