Маршрут (путь) к файлу. Полное имя файла. Атрибуты файлов (в широком смысле).
Чтобы однозначно определить адрес файла на компьютере, необходимо знать:
Путь к папке, где находится файл (аналог адреса квартиры человека);
Имя файла в этой папке (аналог ФИО человека).
Имя файла необходимо для того, чтобы по нему (по имени) обратится к файлу на диске. В одной папке не может быть двух файлов с одинаковыми именами, в разных папках это допустимо.
Полное имя файла (полный путь к файлу) в Windows системах состоит из буквы диска, после которого ставится двоеточие и наклонная черта (обратный слеш), затем через обратные слеши перечисляются подкаталоги, в конце пишется имя файла. Строка завершается символом NULL. Пример:
C:WindowsSystem32calc. exe
в *nix системах полный путь состоит из слеша (/), обозначающего корневой каталог, после которого через слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:
/usr/local/bin/gcc
Имя файла состоит из двух частей, разделенных точкой:
Название (до точки, часто также называют именем);
Расширение (необязательная часть).
Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например максимально допустимое полное имя файла на диске C будет таким «C:<256 символов>NULL». Однако юникод версии некоторых функций позволяют использовать имена файлов содержащие до 32000 символов, такие имена начинаются с префикса «?». Пример:
C:WindowsSystem32calc. exe
При использовании префикса «?» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей максимальное полное имя файла ограничено константой MAX_PATH (260 символов).
В имени файла запрещено использование некоторых служебных символов: «», «/», «:»(только в Windows - в Linux этот символ в имени разрешён), «*», «?», «"», «<», «>», «|».
Название файлу (до точки) следует давать осмысленное, говорящее о назначении файла, дабы избежать путаницы в дальнейшем.
Расширение файла
Расширение файла может вообще отсутствовать или быть любой длины (в пределах длины имени файла). Расширение определяет тип (формат) файла, то есть по расширению пользователь и ОС определяют тип данных, хранящихся в файле. Например, в Windows, файлы с расширением bmp - несжатые изображения,jpg - сжатые изображения.
Все файлы на компьютере можно условно поделить на:
программы (исполняемые файлы) ;
документы .
Только программы умеют что то «делать»: создавать (документы), просматривать (документы) изменять (документы). Документ же - результат работы программы, сохраненный на диск. Документы ничего делать не умеют, это просто данные на диске. Чтобы просмотреть или изменить документ, необходимо, чтобы была установлена программа, умеющая работать с этим типом документа. Если такой программы не будет установлено, ОС не сможет открыть файл.
Например, в ОС Windows для программ используются расширения exe и com . Файлы с другими расширениями можно считать документами.
Путь к файлу - это очень простая тема, которая, тем не менее, вгоняет в ступор большинство пользователей, особенно с гуманитарным складом ума.
В этой статье я попробую разжевать, разобрать “по косточкам” эту тему настолько подробно и внятно, чтобы стало понятно абсолютно любому человеку, даже если он только вчера сел за компьютер.
Надеюсь, вы уже знаете, что такое файл. Поэтому разбирать этот термин здесь не будем. А будем вести рассказ только о пути к файлу.
Забегая вперёд, скажу, что есть два способа добраться до файла - используя либо полный путь к файлу, либо относительный путь. Подробнее об этом чуть позже, а пока разберёмся с именем файла.
Имя файла в операционных системах DOS/Windows состоит из трёх частей:
- Название (имя).
- Разделитель.
- Расширение.
ПРИМЕЧАНИЕ
По умолчанию в Windows расширения файлов скрыты, так что в Проводнике вы можете их и не увидеть. Как сделать их видимыми - зависит от операционной системы.
В первых версиях операционной системы DOS имя (то есть первая часть имени файла) не могла иметь длину более 8 символов. Сейчас это ограничение снято. Однако я настоятельно рекомендую не давать файлам слишком длинные имена. Потому что если полный путь к файлу (о полном пути будет сказано далее) будет превышать 255 символов, то вы можете столкнуться с разного рода неприятностями (особенно в операционных системах вплоть до Windows XP).
Полный путь к файлу
Итак, с именем файла мы разобрались. И это уже хорошо. Теперь определимся с тем, что такое полный путь к файлу.
Начнём с истоков. Где хранятся файлы? Правильно - на диске.
Поэтому начало пути любого файла - это диск (либо какой-то сетевой ресурс, но это уже отдельная тема).
Файл может храниться непосредственно на диске, либо в какой-то папке (каталоге, директории - это разные названия одного и того же объекта - папки). Папки могут быть вложенными другу в друга (как матрёшки).
То есть полный путь файла начинается с буквы диска и заканчивается именем файла. А между ними могут быть имена каталогов. Каталоги в DOS/Windows разделяются косой чертой (\).
Например, у нас на диске С есть папка 000, а в этой папке есть папка 010, а в этой папке тоже есть папка 100. А уже в папке 100 есть файл 111.ТХТ. Тогда полный путь к файлу будет такой:
С:\000\010\100\111.ТХТ
Относительный путь к файлу
С этим вопросом у новичков обычно сложнее. Потому что теорию относительности люди как-то плохо понимают))))
Разумеется, относительный путь к файлу - это тема намного более простая, чем вышеупомянутая теория Эйнштейна. Поэтому разберёмся и с ней.
Итак, однозначно можно определить местоположение файла, если известен полный путь к нему.
Однако не всегда удобно использовать полный путь, потому что он слишком длинный. И если сейчас для пользователя это не так актуально, то во времена DOS и других подобных операционных систем, где приходилось работать только в командной строке, этот вопрос был очень и очень даже большой проблемой.
Поэтому, чтобы не писать полный путь к файлу для того, чтобы получить к нему доступ, придумали такую штуку как относительный путь.
Сначала давайте вспомним про вложенные папки (каталоги).
Итак, всё начинается с диска. Диск - это корневой каталог. Корневой - потому что он первый в пути, и дальше “расти” уже некуда. Диск - это корень. А дальше растут стволы и ветви (папки), а на ветвях растут листья (файлы).
Соответственно каждая папка имеет родителя (кроме корневого каталога). Но не каждая папка имеет детей (то есть вложенные папки). Что поделаешь - не всем везёт в любви)))
Следовательно, у каждой папки могут быть (а могут и не быть) дочерние папки. И у каждой папки (кроме корневого каталога) есть родительские папки.
Следовательно, в общем случае папка может быть родительской относительно своих “детей”, и дочерней относительно своих “родителей”.
Здесь всё как в жизни - вы чей-то ребёнок, и также чей-то родитель (ну или скоро будете)))
Для вашей мамы вы ребёнок, а для ваших детей - мама (или папа).
А теперь наконец после долгих лирических отступлений перейдём к относительности путей. Итак, снова вспомним наш пример:
С:\000\010 \100\111.ТХТ
Здесь каталог 010 является дочерним относительно каталога 000, и он же является родительским по отношению к каталогу 100.
Когда вы работаете в командной строке или в Проводнике, то в текущий момент времени вы можете находиться только в одной папке.
Например, если вы работаете в командной строке и находитесь в папке 100 из нашего примера, то для открытия файла 111.ТХТ вам не надо набирать полный путь к файлу - достаточно написать только имя файла.
Имя файла в данном случае и будет относительным путём. То есть относительный путь - это часть полного пути относительно текущего каталога.
Например, вы находитесь в папке 010. То есть выше находятся
а ниже находится каталог
Тогда относительный путь к файлу 111.ТХТ будет таким:
Так можно перемещаться вниз относительно текущего местоположения.
А можно ли перемещаться вверх?
Да, можно.
Для того, чтобы перейти на одну ступень вверх (то есть в ) относительно текущего каталога, используются две точки..
Например, если мы находимся здесь: С:\000\010\100, и в папке 010 у нас есть файл 011.ТХТ, то открыть его можно так:
А если в папке 000 у нас есть файл 001.ТХТ, то открыть его можно так:
Как прописать путь к файлу
Вернёмся к полному пути, который мы рассмотрели выше:
С:\000\010\100\111.ТХТ
Если у вас есть такие папки и в этих папках есть такой файл, то вы можете ввести этот путь в командной строке, или прописать путь к файлу в адресной строке Проводника и нажать ENTER. Тогда файл откроется (если, конечно, у вас есть программа, которая сможет его открыть и с этой программой связан тип этого файла).
Командную строку можно вызвать комбинацией клавиш WIN+R или через меню ПУСК-ВЫПОЛНИТЬ.
Когда вы откроете командную строку, то можете непосредственно в ней ввести команду (в нашем случае командой будет путь к файлу) и нажать ENTER.
Если же вам любопытно немного помучиться и представить, как люди работали в DOS, то вы можете открыть командный интерпретатор. Для этого в командной строке наберите CMD (для Windows 2000 и выше) или COMMAND (для Windows 95/98/ME) и нажмите ENTER.
Откроется консоль (см. рис.), где вы можете вдоволь натешиться, вводя разные команды. Правда, для этого вы должны их знать - но это уже другая тема…
Если что-то осталось непонятным, то опять же отправляю вас к книге Компьютер для чайника .
Неправильный путь к файлу
Наверняка при работе за компьютером вы получали сообщение о том, что файл не найден, что указан неправильный путь или что-то типа того (см. рис. выше).
Причины подобных ошибок могут быть следующими:
- Файл не существует по указанному пути.
- Указанный путь не существует (например, вы указали диск D, а на вашем компьютере нет диска с такой буквой).
- В имени файла содержатся недопустимые символы (список недопустимых символов у каждой операционной системы свой).
- Путь к файлу слишком длинный, и операционная система не может его понять.
- Кодировка символов в пути к файлу не соответствует кодировке, установленной в операционной системе (это надо, в основном, программистам - обычные пользователи редко встречаются с такой проблемой).
Существует три основных типа файлов:
Система распознает только файлы этих типов. Однако в операционной системе также применяются многие производные типы файлов
Файлы, название которых начинается с точки, называются скрытыми файлами или «dot» файлами. Увидеть такие файлы можно и с помощью графического файлового менеджера, такого как Наутилус , и из оболочки командной строки. В Наутилусе выберите Правка (Edit) → Параметры (Preferences) . В появившемся окне во вкладке Вид (View) выберитеПоказывать скрытые файлы (ShowHiddenFiles) . В командной строке воспользуйтесь для просмотра содержимого каталога командой ls -al. Просматривая скрытые файлы в своем домашнем каталоге, вы можете удивиться их количеству. Эти скрытые файлы обычно бывают конфигурационными файлами приложений. Их прячут, чтобы предотвратить их случайное изменение и не загромождать окно просмотра домашнего каталога.
Типы файлов:
Batchfile(Пакетный файл) - То же самое, что и командный файл. С одержит команды операционной системы
Binaryfile(Двоичный файл) - Содержит данные или команды в двоичном виде
Commandfile(Командный файл) - Содержит команды операционной системы
Datafile(Файл данных) - Содержит данные
Directoryfile(Файл директории) - Содержит информацию о файлах, находящихся в директории
Executablefile(Исполняемый файл) - Содержит программу или команды в исполняемом формате
Libraryfile(Файл библиотеки) - Содержит функции в объектном формате
Mapfile(Файл карты) - Содержит карту программы
Objectfile(Объектный файл) - Содержит код программы (функции) после компиляции
Textfile(Текстовый файл) - Содержит текст (который можно читать); это может
быть файл, который создан редактором текстов или любой файл в формате ASCII.
Путь доступа к файлу:
Файловая система построена из обыкновенных файлов, символических связей и справочников. Эти компоненты обеспечивают способ организации, поиска и управления информацией.
Обыкновенные файлы - это набор символов, хранящихся на диске. Они могут хранить тексты или программы или коды программ.
Специальные файлы соответствуют физическим устройствам (например, терминал или диск).
Символическая связь - это файл, который указывает на другой файл.
Справочник содержит имена других справочников (называемых подсправочниками) или файлов. Все справочники и файлы организованы в три отдельные структуры. В этой иерархии файлы и справочники, которые имеют подчинение, называются взаимоотношением.
Этот тип отношений возможен для многих уровней иерархии файлов и справочников.
Полное имя файла:
Полное имя файла (полный путь к файлу) в Windows системах состоит из буквы диска, после которого ставится двоеточие и наклонная черта (обратный слеш), затем через обратные слеши перечисляются подкаталоги, в конце пишется имя файла. Строка завершается символом NULL. Пример:
C:\Windows\System32\calc.exe
в *nix системах полный путь состоит из слеша (/), обозначающего корневой каталог, после которого через слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:
/usr/local/bin/gcc
Имя файла состоит из двух частей, разделенных точкой:
Название (до точки, часто также называют именем);
Расширение (необязательная часть).
Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например максимально допустимое полное имя файла на диске C будет таким «C:\<256 символов>NULL». Однако юникод версии некоторых функций позволяют использовать имена файлов содержащие до 32000 символов, такие имена начинаются с префикса «\\?\». Пример:
\\?\C:\Windows\System32\calc.exe
При использовании префикса «\\?\» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей максимальное полное имя файла ограничено константой MAX_PATH (260 символов).
В Windows в имени файла запрещено использование некоторых служебных символов: «\», «/», «:», «*», «?», «"», «<», «>», «|». В Linux эти символы, кроме «/», допустимы, хотя использовать их следует с осторожностью, так как некоторые из них могут иметь специальный смысл, а также из соображений совместимости с другими ОС.
Название файлу (до точки) следует давать осмысленное, говорящее о назначении файла, дабы избежать путаницы в дальнейшем.
Файловые менеджеры.
Файловый менеджер (англ.filemanager ) - компьютерная программа, предоставляющая интерфейс пользователя для работы с файловой системой и файлами. Файловый менеджер позволяет выполнять наиболее частые операции над файлами - создание, открытие/проигрывание/просмотр, редактирование, перемещение, переименование, копирование, удаление, изменение атрибутов и свойств, поиск файлов и назначение прав. Помимо основных функций, многие файловые менеджеры включают ряд дополнительных возможностей, например, таких как работа с сетью (через FTP, NFS и т. п.), резервное копирование, управление принтерами и пр.
Выделяют различные типы файловых менеджеров, например:
Навигационные и пространственные - иногда поддерживается переключение между этими режимами.
Двупанельные - в общем случае имеют две равноценных панели для списка файлов, дерева каталогов и т. п.
Файл – это поименованная область памяти на внешнем носителе, содержащая информацию. Имя файлов состоит из 2 частей: собственного имени и расширения, разделенных точкой. Собственное имя задается пользователем и может содержать 255 символов. В состав этих символов могут входить буквы, цифры, специальные символы за исключением. , т.к. разделяет собственное имя и расширение; ? может заменять один любой символ; * заменяет любое кол-во символов, /\ прямой и обратный слеш, разделяет вложенные папки. Расширение обычно задает та программа, в которой создавался файл. Такое расширение содержит 3 буквы, но пользователь может задать сам расширение. Для файлов различают полное имя (путь). Полное имя показывает все уровни каталога, в котором находится файл. Полное имя файла начинается с имени диска, на котором сохранен файл.
3. Чему равно десятичное значение двоичного числа 10012? Во сколько раз изменится значение этого числа, если справа к нему приписать один нуль, два нуля, три нуля?
1001=1х2 0 +0х2 1 +0х2 2 +1х2 3 =9
10010=0х2 0 +1х2 1 +0х2 2 +0х2 3 +1х2 4 =18
Билет №28
1. Организация файловой структуры. Понятия сектора, дорожки, цилиндра, кластера, fat - таблицы.
Понятие цилиндра. Все современные дисковые операционные системы обеспечивают создание файловой системы, предназначенной для хранения данных на дисках и обеспечения доступа к ним. Принцип организации файловой системы зависит от операционной системы. Наиболее распространенный тип - табличный. Во-первых, диск представляется как набор поверхностей. У гибких дисков их всего две (верхняя и нижняя), но жесткие диски - это на самом деле «этажерки», состоящие из нескольких пластин, поэтому количество поверхностей у них больше. Во-вторых, каждая поверхность диска разделяется на кольцевые дорожки, а каждая дорожка - на секторы. Размеры секторов фиксированы и равны 512 байт. Чтобы найти на диске тот или иной файл, надо знать, где он расположен, то есть, нужен его адрес. Проще всего было бы записать адрес файла в виде номера поверхности, номера дорожки и номера сектора, но на самом деле это выполняется не совсем так. Дело в том, что у каждой поверхности есть своя головка для чтения записи, и эти головки перемещаются не порознь, а одновременно. То есть, если, например, пятая головка подводится к тридцатой дорожке, то и все головки подводятся к своим тридцатым дорожкам. Поэтому вместо понятия дорожки используют понятие цилиндра. Цилиндр - это совокупность всех дорожек, имеющих одинаковые номера, то есть равноудаленных от оси вращения. Поэтому реально местоположение файла на жестком диске определяется номером цилиндра, номером поверхности и номером сектора. Понятие кластера. Сектор - это наименьшая единица хранения данных, но для адресации она используется далеко не во всех файловых системах. Для этого она слишком мала. Такие операционные системы, как MS-DOS и Windows используют для адресации более крупную единицу хранения, называемую кластером. Кластер - это группа соседних секторов. Размер кластера зависит от размера жесткого диска. Чем больше диск, тем большим назначается размер кластера. Типовые значения: 8,16,32 или 64 сектора. Данные о том, в каком кластере диска начинается тот или иной файл, хранятся в системной области диска в специальных таблицах размещения файлов (FAT-таблицах). Поскольку нарушение FAR-таблицы приводит к невозможности воспользоваться данными, записанными на диске, к ней предъявляются особые требования надежности, и она существует в двух экземплярах, идентичность которых регулярно контролируется средствами операционной системы. Некоторые операционные системы реализуют 16-разрядные поля в таблицах размещения файлов. Такая файловая система называется FAТ 16. Она позволяет разместить в FAT-таблицах не более 65 536 записей (2 16) о местоположении данных. Из-за этого ограничения данные операционные системы не позволяют работать с жесткими дисками размером более 2 Гбайт. В настоящее время операционные системы windows обеспечивают более совершенную файловую систему - Fat 32 с 32-разрядными полями в таблице размещения файлов. Это позволяет работать с любыми современными жесткими дисками.
Любая web-страница, картинка, видео и т. д. это в первую очередь файл, имеющий свой абсолютный или относительный путь (адрес). Сам файл в сети Интернет находится на компьютере, который называется сервер . Таким образом, следует учесть способы представления файла на сервере и в сети Интернет. В данной статье мне бы хотелось прояснить перечисленные моменты и внести ясность в затронутый вопрос. Попробуем?
Абсолютный путь (адрес)
Что такое абсолютный путь к файлу?
Абсолютный путь или адрес - это полный путь или адрес, относительно домашней папки на сервере или доменного имени в сети Интернет .
Говоря «домашняя папка » я подразумеваю начало выделенного хостинг-провайдером пространства. Например, если речь идёт о локальном сервере, на операционной системе Windows, в качестве домашней папки будет выступать сам диск, т. е. C:/ . В тоже время, зачастую хостинг-провайдер выделяет пользователю лишь определенное виртуальное (условное) пространство, для которого в качестве домашней папки выступает определенная папка, зачастую называемая /home .
Говоря «доменное имя » я подразумеваю URL-адрес, который начинается с упоминания протокола, например: http://sitename.ru/ . В сети Интернет, именно он является домашней папкой для каждого из представленных ресурсов.
Как узнать абсолютный путь на сервере в PHP?
Если с URL-адресом всё более-менее понятно, то вот с домашней папкой на сервере дело обстоит несколько сложнее. В конце концов, у каждого провайдера есть свои заморочки и это следует учесть.
А начну я с того, что абсолютный путь на сервере обычно определяется относительно места нахождения скрипта, в котором это происходит. Например, файл config.php находится в корневой папке сайта и нам нужно узнать абсолютный путь к нему.
Уточню, говоря «корневая папка » я подразумеваю папку на сервере, выделенную для сайта. Именно она служит отправной точкой URL-адреса относительно доменного имени.
Для этого можно использовать константу __FILE__ , которая содержит полный путь и имя текущего файла, в котором она вызывается. Для того же чтобы получить только полный путь и убрать имя текущего файла, можно использовать функцию dirname() , которая возвращает родительский каталог указанного пути. Например:
$abspath = dirname(__FILE__) ."/";
В PHP 5.3 и новее, можно уже использовать константу __DIR__ :
$abspath = __DIR__
Таким образом очень удобно подключать в дальнейшем файл config.php и использовать полученный в нем абсолютный путь переменной $abspath как отправную точку. Например, предположим, что скрипт test.php находится в папке: path/ - а нужный файл data.txt в папке: data/ . В этом случае вызов может иметь вид:
Include_once("../config.php"); $fh = fopen($abspath ."/2013/12/data/data.txt", "r");
Обратите внимание, что подключение файла config.php я произвел с использование относительного пути, но об этом чуть позже.
Относительный путь (адрес)
Что такое относительный путь к файлу?
Относительный путь или адрес — это путь или адрес относительно места нахождения файла, в котором производится обращение к другому файлу.
Любая файловая система представляет собой строгую иерархию родительских и дочерних папок и файлов. Например: C:\folder\file.php – здесь папка folder\ является дочерней для диска C:\ и родительской для файла file.php .
Для наглядности давайте рассмотрим следующую иерархию:
- file1.php
- folder\
- file.php
- subfolder\
- file3.php
Чтобы из файла C:\folder\file.php обратиться к файлу C:\file2.php , нам нужно выйти из текущей папки folder\ , т.е. подняться на один уровень выше. Для этого можно использовать, папку (я бы даже сказал псевдо-папку) родительского каталога , представляющую собой две точки (..) . Другими словами, мы получим путь: ..\file2.php - относительно файла file.php .
Чтобы из файла C:\folder\file.php обратиться с файлу C:\folder\subfolder\file3.php , нам нужно войти в подпапку subfolder\ , т.е. опуститься на один уровень ниже. Так мы получим путь: subfolder\file3.php - относительно файла file.php .
Давайте усложним задачу и обратимся из файла C:\folder\subfolder\file3.php к файлу C:\file2.php . Относительный путь будет иметь вид: ..\..\file2.php - мы поднялись на два уровня выше. Выполнить обратное, т.е из файла C:\file2.php обратимся к файлу C:\folder\subfolder\file3.php . Относительный путь будет иметь вид: folder\subfolder\file3.php - мы опустимся на два уровня ниже.
Преимущества и недостатки относительного пути (адреса)
Очевидно, что относительный путь не содержит домашней папки и родительских папок. Таким образом, конечный адрес получается короче. Более того, в случае необходимости переезда с одного домена на другой не возникнет необходимости прописывать новый абсолютный адрес.
С другой стороны, в случае цитирования контента сайта, на другом ресурсе, с теми же картинками, в которых прописан относительный путь, мы получим ошибку, т.к. на стороннем ресурсе отсутствуют папки и файлы сайта. Так получится в случае просмотра страницы в кэше поисковых систем. Опять же, используя относительный путь можно легко допустить ошибку, которая выльется в проблему индексации сайта.
Подводя итог, следует отметить, что использование относительного пути или адреса желательно свести к минимуму и использовать абсолютные пути и адреса.
Заключение
В своей статье я постарался рассмотреть фундаментальный вопрос, связанный с абсолютными и относительными путями (адресами) к файлам и папкам. По сути, если вы работаете на компьютере, то уже априори имеете представление о файловой системе, но без учета некоторых нюансов, достаточно сложно сдвинуться с мертвой точки и затронуть ряд вопрос, которые неизбежно относятся к правильности адресации. На этом у меня всё. Спасибо за внимание. Удачи!
в 8:00 | Изменить сообщение | 5 комментариев |