Файловая система – это набор программных средств которые обеспечивают хранение файлов и их расположение в папках на диске. Так как файлы хранят какие либо данные, мы можем утверждать что это средство для организации данных на компьютере. Основыне принципи:

  • Каждый файл находятся в определенной папке, папку называют также каталог
  • Каждая папка кроме корневой папки находится в другой папке
  • На диске существует одна единственная корневая папка. Путь к ней в 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 <путь>