"Полный путь" является синонимом "абсолютный путь"
- «Полная квалификация» и «абсолютный путь» означают одно и то же - путь, который не относится к подразумеваемому или заданному контексту.
- Каждый путь - это либо полный путь , либо это относительный путь
Каждое местоположение в файловой системе имеет множество путей, которые можно использовать для ссылки на него, включая многочисленные полные пути :
- C: \ temp.txt
- C: \ Program Files \ .. \ temp.txt
- C: \ Program Files \ Microsoft \ .. \ .. \ temp.txt
- и т.д.
С концептуальной точки зрения один из этих полностью определенных путей - это самый простой и простой способ указать этот ресурс - это ваш канонический путь .
Для файла или каталога, существует ли полностью заданный путь только одно? канонический путь.
Нет, полный путь - это любой путь, который не является относительным путем (не относящимся к текущему каталогу подразумеваемого или указанного контекста). Несколько, но отдельные, полностью определенные пути могут ссылаться на одно и то же место в файловой системе. Перечитайте:
В чем разница между getPath (), getAbsolutePath () и getCanonicalPath () в Java?
но заменять «полностью квалифицированным» везде, где говорится «абсолютный».
Для ясности, некоторые люди также используют термин "относительный путь", чтобы также ссылаться на путь с "относительной ссылкой" (двойные точки ..
) внутри него. Например, некоторые могут назвать C:\Program Files\Microsoft\\..\temp.txt
«относительным путем» из-за двойных точек, но я бы назвал его полностью определенным путем с относительной ссылкой. Надеюсь, из разговора станет ясно, что они имеют в виду, когда говорят «относительный путь» (путь относительно контекста или путь с относительной ссылкой в нем).
Они оба совершенно одинаковые понятия?
Нет, как указано в другом вопросе SO, существует множество способов указать полностью определенный путь (абсолютный путь) к местоположению, но только один из этих полностью определенных путей считается каноническим путем к этому. место.
Еще одна вещь. Путь UNC тоже относится к полному пути?
Да, UNC-пути не являются относительными; это полностью определенные пути. - http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx#fully_qualified_vs._relative_paths
Является ли символическая ссылка или жесткая ссылка полностью указанным путем?
Это независимая концепция. Путь (независимо от того, является ли он относительным или полным) приводит к расположению в файловой системе. Сущность в этом месте может быть одной из многих вещей: обычный файл, каталог, символическая ссылка, жесткая ссылка, устройство, именованный канал и т. Д. Символическая ссылка или жесткая ссылка содержит метаданные, которые ведут к данные, которые вы действительно искали в этом месте.
Время аналогии
Вы можете думать о путях и ссылках в терминах указаний на чей-то дом:
- a относительный путь - это направления от вашего текущего местоположения
- a полностью определенный путь - указатели от ратуши, независимо от того, где вы находитесь
- В нашем странном маленьком городке Униксвилл все соглашаются и неявно понимают, что "полностью определенные указания" всегда начинаются в ратуше, как это ни странно, суета, которую все называют "
/
".
- В следующем городе (Windowsville) есть несколько ратуш (по одному на каждую часть города), которые называются
C:\
, D:\
, E:\
и т. Д.
- Разные люди могут дать вам разные указания (пути), чтобы добраться до одного и того же дома, даже если они все начинаются с одной и той же начальной точки (ратуша) - некоторые направления будут более прямыми, чем другие.
- a канонический путь - это полностью определенные указания, которые являются самым простым и простым способом добраться от ратуши до желаемого дома
- a символическая ссылка isкак пустой лот с пометкой, в которой указываются направления к адресу переадресации
- тип направлений, которые привели вас сюда (будь то относительные направления, полностью определенные направления или даже канонические полностью определенные направления)не имеет никакого отношения к тому, ведет ли он к дому или любому пустому участку с указанием направления пересылки здесь
- есть странный случай, когда одна из улиц в вашем направлении на самом деле является символической ссылкой (объезд? портал?) -аналогия здесь разваливается, если мы смотрим на нее слишком внимательно, поэтому давайте просто проигнорируем ее: -)
- a hard link - это дом, доступный из двух или более разныхадреса.
- Подумайте о доме на углу улиц Вязов и Мэйн-стрит.Почтовое отделение по ошибке дало ему два адреса:
10 Elm Str
и 20 Main Str
.Независимо от того, по какому адресу вы идете, вы в конечном итоге окажетесь в одном доме. - В нашем странном маленьком городке эти дома с жесткими связями могут иметь несколько адресов, и адреса не обязательно должны быть рядом друг с другом..
- Независимо от того, по какому адресу вы идете, это один и тот же дом.Это не копия, это не адрес пересылки.Просто волшебным образом, как только вы входите внутрь, вы попадаете в один и тот же дом, независимо от того, какой адрес вы использовали, чтобы попасть туда.
- указаний, которые привели вас к дому (независимо от того, какой адрес использовался или был линаправления были относительными направлениями, полностью определенными направлениями или даже каноническими полностью уточненными указаниями) не имеет отношения к тому, является ли дом по этому адресу домом с жесткой связью или нет
Приложение
Редактировать
Я попросил кого-нибудь, кто ведет страницу именования файлов, путей и пространств имен, сообщить мне об этом.И он мне ответил.
Это тоже полностью квалифицированный путь?C: \ directory .. \ directory \ file.txt
Интересно, какие термины использовал бы создатель этой страницы, чтобы различать ..\file.txt
и C:\directory\..\directory\file.txt
, поскольку он называет их обоими относительными путями.Я согласен с тем, что двойные точки являются относительной ссылкой, но я бы не стал обозначать весь путь как относительный, потому что он имеет двойные точки в середине.В его терминологии нет разницы между полностью квалифицированным и каноническим.(В этом, я полагаю, и лежит источник вашего вопроса).
Я пришел из Unix и Java, поэтому, возможно, в этом и есть разница.Как я узнал:
относительная / частично определенная - местоположение не может быть определено без информации о соответствующем контексте, например, о текущем рабочем каталоге, текущем диске,текущий каталог диска, параметр PATH оболочки, параметр Java CLASSPATH или URL-адрес ссылки.
абсолютная / полностью определенная - местоположение не зависит от связанного контекста, то есть местоположение одинаково независимо от текущего рабочего каталога, текущего диска,текущий каталог диска, параметр оболочки PATH, параметр Java CLASSPATH или URL-адрес ссылки.
канонический - самый простой полностью определенный, т. е. двойнойточки
Итак
- .. \ file.txt - относительно
- C: \ directory \ ..\ directory \ file.txt - полностью определено
- C: \ directory \ file.txt - полностью определено и канонично
Этот раздел на странице MSDN не ясен на C:\directory\..\directory\file.txt
: если C:\directory\..\directory\file.txt
считается относительным и не будет работать с Windows API, который говорит, что ему требуется полная квалификация (но не обязательно каноническая)?) путь, я бы предположил, что страница должна сделать это более понятным.
Полностью квалифицированный и относительный
Имя файла относительно относительно текущего каталога , если оно не начинается с одного из следующих:
... * Обозначение диска с обратной косой чертой, например "C: \" или "d: \". ...
Поскольку C:\directory\..\directory\file.txt
начинается с обозначения диска с черной косой чертой, этот путь является полностью определенным, а не относительным.
Путь также называется относительным , если онсодержит «двойные точки» ;то есть два периода вместе в одном компоненте пути.Этот специальный спецификатор используется для обозначения каталога над текущим каталогом , иначе называемого «родительским каталогом».Примеры этого формата:
- ".. \ tmp.txt" определяет файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- ".... \ tmp.txt "указывает файл, который находится на две директории выше текущего каталога.
- " .. \ tempdir \ tmp.txt "указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdirкаталог одноранговой сети к текущему каталогу.
Я интерпретировал фразу , содержащую двойные точки , что означает , ведущий двойные точки.Примеры показывают только ведущие двойные точки.Терминология «текущий каталог» обычно означает текущий рабочий каталог процесса или текущий каталог диска, который имеет отношение, только когда речь идет о начальных двойных точках.Однако я могу видеть, как этот раздел можно интерпретировать по-другому.
Независимо от , все вырастают по-разному, и контекст - это король, поэтому я думаю, что всем нужно быть осторожным снюансы при чтении документов или обсуждении с инженерами различного происхождения о том, что они подразумевают под «полностью квалифицированным» и «относительным» *