Подтвердить что ты не робот

Полностью квалифицированный путь Vs. Канонический путь

В Java существует концепция канонического пути.
И в WinApi есть полностью квалифицированный путь.

Я хорошо знаю, что такое канонический путь, но я не понимаю полностью квалифицированные концепции пути.

Для файла или каталога, полностью ли qulified путь существует только одна вещь? подобный канонический путь.

Являются ли они обоими одинаковыми понятиями?

Edit:
Еще кое-что, Связана ли ссылка с символом или жесткая ссылка с полным путем?

Edit
Я спросил кого-то, кто поддерживает страницу "Именование файлов, пути и пространства имен" , чтобы сообщить мне об этом.
И он ответил мне.

Является ли это также полностью законченным путем?
C:\каталог \..\каталог\file.txt

Технически это относительный путь, потому что он содержит двойную точку (..), и некоторые API не обрабатывают их правильно (в документах будет ясно указано, что для этого нужен полный путь).
Эти два являются взаимоисключающими.

То, что он имеет в виду, в моих догадках, если мы поместим такой параметр, как этот "C:\directory \..\directory\file.txt", в функцию, требуемую полностью квалифицированным путем, функция никогда не переинтерпретирует путь и затем не выполняется.

Если это так, полностью определенный путь полностью совпадает с каноническим путем. Не так ли.

4b9b3361

Ответ 1

"Полностью квалифицированный путь" является синонимом "абсолютного пути"

  • "Полностью квалифицированный" и "абсолютный путь" означает одно и то же: путь, который не относится к подразумеваемому или заданному контексту.
  • Каждый путь - это либо полностью квалифицированный путь, либо относительный путь
  • Каждое место в файловой системе имеет множество путей, которые могут быть использованы для обращения к нему, включая многочисленные полностью определенные пути:

    • C:\temp.txt
    • C:\Program Files \..\temp.txt
    • C:\Program Files\Microsoft \.. \..\temp.txt
    • и др.
  • Концептуально говоря, один из тех полностью квалифицированных путей - это самый простой, самый простой способ указать этот ресурс - ваш канонический путь.

Для файла или каталога, полностью ли qulified путь существует только одна вещь? подобный канонический путь.

Нет, полный путь - это любой путь, который не является относительным путем (не относительно текущего каталога подразумеваемого или заданного контекста). Несколько, но разные, полностью квалифицированные пути могут ссылаться на одно и то же место в файловой системе. Перечитайте:

В чем разница между 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 относительный путь - это направления из вашего текущего местоположения
  • полный курс - это направления из городской застройки, независимо от того, где вы находитесь
    • В нашем странном маленьком городке Unixville все согласны и понимают, что "полностью квалифицированные направления" всегда начинаются в ратуше, как ни странно, в здании, которое все называют "/".
    • В следующем городе (Windowsville) есть несколько ратушей (по одной для каждой части города), называемых C:\, D:\, E:\ и т.д.
    • Разные люди могут дать вам разные направления (пути), чтобы добраться до одного и того же дома, даже если все они начинаются с одной и той же начальной точки (таунхаусы) - некоторые направления будут более прямыми, чем другие.
  • a канонический путь - это полностью квалифицированные направления, которые являются простейшим, самым простым способом добраться из города в желаемый дом.
  • Символьная ссылка похожа на пустую лот с запиской, которая дает указания на адрес пересылки
    • тип направлений, которые привели вас сюда (независимо от того, были ли они относительными направлениями, полностью квалифицированными направлениями или даже каноническими полностью квалифицированными направлениями) не имеет никакого отношения к тому, ведет ли он к дому или к любой пустой партии с направлением направления здесь
    • Есть странный случай, когда одна из улиц в вашем направлении на самом деле символическая ссылка (объезд? портал?) - аналогия здесь разваливается, если мы слишком внимательно смотрим на нее, поэтому давайте просто проигнорируем ее:-)
  • жесткая ссылка - это дом, доступный из двух или более разных адресов.
    • Подумайте о доме на углу улицы Вязов и главной улицы. Почтовое отделение ошибочно дало ему два адреса: 10 Elm Str и 20 Main Str. Независимо от того, к какому адресу вы обращаетесь, вы оказываетесь в том же доме.
    • В нашем странном маленьком городке эти дома с жесткой связью могут иметь несколько адресов, и адреса не должны находиться где-то рядом друг с другом.
    • Независимо от того, к какому из его адресов вы идете, к тому же дому. Это не копия, а не адрес пересылки. Просто волшебно, как только вы войдете внутрь, вы окажетесь в том же доме, независимо от того, какой адрес вы использовали для этого.
    • направления, которые привели вас к дому (независимо от того, какой адрес использовался или были ли направления относительными направлениями, полностью квалифицированными направлениями или даже каноническими полностью квалифицированными направлениями) не влияет на то, находится ли дом по этому адресу это дом с твердой связью или нет.

Добавление

Изменить

Я спросил кого-то, кто поддерживает страницу "Именование файлов, пути и пространства имен", чтобы сообщить об этом. И он ответил мне.

Это также полный путь? C:\каталог..\каталог\file.txt

Интересно, какие термины использует тот, кто использует эту страницу, чтобы различать ..\file.txt и C:\directory\..\directory\file.txt, поскольку он называет их как относительным путем. Я согласен, что двойные точки являются относительной ссылкой, но я бы не пометил весь путь как относительный, потому что он имеет двойные точки в середине. В его терминологии нет никакой разницы между полностью квалифицированным и каноническим. (В этом, я полагаю, лежит источник вашего вопроса).

Я исхожу из фона Unix и Java, поэтому, возможно, это имеет значение. Когда я это узнал:

  • относительный/частично квалифицированный - местоположение не может быть определено без соответствующего контекста, предоставляющего информацию, например. текущий рабочий каталог, текущий диск, текущий каталог диска, параметр PATH оболочки, параметр Java CLASSPATH или ссылочный URL.

  • абсолютный/полностью квалифицированный - местоположение не зависит от связанного с ним контекста, т.е. местоположение является одинаковым независимо от текущего рабочего каталога, текущего диска, текущего каталога диска, параметр PATH оболочки, параметр Java CLASSPATH или ссылочный URL.

  • canonical - простейшая полностью квалифицированная, то есть нет двойных точек

Итак,

  • ..\file.txt - относительный
  • C:\directory \..\directory\file.txt - полностью
  • C:\directory\file.txt - полностью и канонически

Этот раздел страницы MSDN не отображается на C:\directory\..\directory\file.txt: Если C:\directory\..\directory\file.txt считается относительным и не будет работать с Windows API, которые говорят, что им нужен полностью квалифицированный (но не обязательно канонический?) путь, я бы предложил, чтобы страница должна была сделать это понятнее.

Полностью qualtied vs Relative

Имя файла относительное в текущий каталог , если оно не начинается, с одним из следующих:

...  * Обозначение диска с обратной косой чертой, например "C: \" или "d: \". ...

Так как C:\directory\..\directory\file.txt начинается с указателя диска с черным цветом, этот путь является полностью квалифицированным, а не относительным.

Тракт также называется относительным, если он содержит "двойные точки" ; то есть два периода вместе в одном компоненте пути. Этот специальный спецификатор используется для обозначения каталога выше текущего каталога, иначе известного как "родительский каталог". Примеры этого формата:

  • "..\tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
  • "....\tmp.txt" указывает файл, который представляет собой два каталога над текущим каталогом.
  • "..\tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который представляет собой одноранговую директорию в текущий каталог.

Я интерпретировал фразу, содержащую двойные точки, чтобы обозначать ведущие двойные точки. В примерах показаны только ведущие двойные точки. Терминология "текущий каталог" обычно означает текущую рабочую директорию процесса или каталог текущего диска, который имеет отношение только к разговорам о ведущих двойных точках. Однако я могу видеть, как раздел можно интерпретировать другим способом.

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

Ответ 2

Нет. ИМХО, полностью квалифицированный путь позволяет найти ресурс однозначно (независимо от текущего рабочего каталога, среды PATH и т.д.), Но два разных пути могут идентифицировать один и тот же ресурс.

Я не знаю о способе Windows, чтобы узнать, указывают ли два пути на один и тот же файл.