Файловая система как средство организации данных на компьютере
Файловая система – это набор программных средств которые обеспечивают хранение файлов и их расположение в папках на диске. Так как файлы хранят какие либо данные, мы можем утверждать что это средство для организации данных на компьютере. Основыне принципи:
- Каждый файл находятся в определенной папке, папку называют также каталог
- Каждая папка кроме корневой папки находится в другой папке
- На диске существует одна единственная корневая папка. Путь к ней в Windows обозначается как
имя_диска:\
, напримерD:\
Пример:
Тут показана одна корневая папка D:\
, в ней есть папка a
, в папке a
есть папки c
и f
, в папке c
есть файл 1.txt
- Чтобы обращаться к папкам и файлам программно нужно указать ПУТЬ к папке или файлу
- ПУТЬ состоит из папок разделенных при помощи разделителя. В Windows разделитель - это обратный слеш
\
- Путь может быть абсолютным или относительным
Абсолютный путь
Абсолютный путь - это путь в начале которого есть корневая папка.
Пример - абсолютный путь к папке a
:
D:\a
абсолютный путь к файлу 1.txt
:
D:\a\c\1.txt
Вопрос 1: Как выглядит абсолютный путь к папке f
?
Относительный путь
- Это путь относительно какой-то заданной папки.
- В любой программе есть понятие текущая папка (current dir). Именно относительно пути этой папки задается относительный путь.
- Относительный путь начинается с точки
.
Пример:
Допустим папка a
- текущая. Тогда относительный путь к папке f
будет выглядеть как:
.\f
Когда вы скажите операционной системе чтобы она отдала файл - она увидит .
и поймет что вместо точки нужно подстваить путь текущей папки (D:\a
), в конечном счете она поймет что путь к папке f
: D:\a
+ \f
= D:\a\f
Пример: относительный путь к файлу 1.txt
(a
- текущая папка):
.\c\1.txt
! ACHTUNG: чтобы упросить себе жизнь решили что '.\' можно не указывать - то есть относительные пути.\c\1.txt
иc\1.txt
по сути указывают на тоже самое!
Пример:
Теперь допустим что текущая папка f
. А нам нужно обратиться к файлу 1.txt
. Но в примерах выше мы двигались от точки только в низ, а теперь нам нужно сделать шаг вверх - вернуться в папку а
и оттуда пойти в c\1.txt
.
Чтобы это сделать нужно использовать двоеточие ..
. Оно указыват ОС что в пути нужно поднятся вверх (в родительскую папку).
Итак относительный путь к файлу когда f
- текущая:
..\c\1.txt
Точек может быть и несколько да и они не обязательно могут находится в начале пути, пример
D:\a\c\..\f\..\..\a\c\1.txt
пример лишь для демонстрации, использовать такие пути не нужно, но он лучше всего показывает как опреационная система разбирает путь
Пример: Относительный путь к папке a
когда f
текущая:
..
Вопрос 2 как будет выглядить относительный путь к файлу1.txt
когда папкаc
- текущая.
Вопрос 3: как будет выглядить относительный путь к файлу1.txt
когда папкаk
- текущая:
Утилиты командной строки
Файлы и папки можно создавать из коммандной строки (Win+R, cmd
, enter)
- cd <путь> - сменить текущую папку
- mkdir <путь> - создать папку
- echo <строка> > <путь> - написать строку в текстовый файл
- type <путь> - показать содержимое текстового файла
Внимание - путь в любой комманде можно указывать как абсолютный так и относительный!!!
HELP Текущая папка показана в cmd
перед скобкой
Как создать структуру из примера
D: в винде нужно сначала выбирать диск... просто прописывая его имя с двоеточием иначе останешся на диске `C:` cd D:\ абсолютный путь mkdir D:\a можно было бы сделать просто mkdir ./a или даже mkdir a - разници нет cd a заюзали относительный путь mkdir .\c заюзали относительный путь с точкой echo bla > .\1.txt написали bla в файл `1.txt` mkdir ..\f создали папку f ипользуя относительный путь cd ..\f перешли в нее
Вопрос 4 созадать структуру с папками g и k из картинки выше и написать какие комманды использовались
Вопрос 5 зайти в папку k и показать показать содержимое файла 1.txt используя относительный путь. Написать комманды
Бонус - Linux (Unix)
Практически на все сервера установлена ОС Linux а не Windows а в Linux работа с путями немного отличается хоть и очень похожа:
- в linux есть
.
и..
и они работают точно так же как и в Windows - В linux разделителем выступает не обратный
\
а прямой слеш/
и это главное отличее! - Еще одно отличае это то, что в linux нет множества дисков (
C:\
,D:\
). В нем все намного проще - Вместо кучи корневых папок есть только одна - корень - просто
/
. Пример абсолютного пути в линухе -/home/usver/1.txt
- в линухе есть комманды
cd
,mkdir
,echo
и они будут работать как показано выше - вместо
type <путь>
в linux используется коммандаcat <путь>