Какой "канонический путь"?
Это вопрос теории. Я искал по Интернету без удовлетворения, я просто хочу понять, что этот жаргон. Я видел примеры Java, JSON и т.д., Но я не мог найти в Google и здесь в StackOverflow простое объяснение, не нужен код = P
Итак, абсолютный путь - путь к определенному файлу или местоположению, описывающий полный маршрут к нему, полный путь и зависящую от него ОС (абсолютные пути для Windows и Linux, например, различны) Относительный укажите путь к файлу или местоположению, которые он описал из текущего местоположения.. (две точки), указывающие на превосходный уровень в дереве каталогов. Это было ясно для меня уже несколько лет.
При поиске я даже видел, что есть канонизированные файлы!
Все, что я знаю, это CANONICAL означает что-то вроде "по правилам" или что-то в этом роде.
Может кто-нибудь, пожалуйста, просветить меня в терминах теории о каноническом материале, пожалуйста? =) СПАСИБО!!
PD (Итак, это было не просто случайное имя Ubuntu) XD
PD2 К сожалению, я не могу дать ответ всем, я дал его тому, который помог мне лучше понять концепцию, но очень спасибо всем =)
Ответы
Ответ 1
Весь смысл делать что-либо "каноническим", чтобы вы могли сравнить две вещи. Например, как ../../here/bar/x
, так и ./test/../../bar/x
могут ссылаться на одно и то же место, но вы не можете выполнять текстовое сравнение по двум путям. Однако, если вы превратите их в свое каноническое представление, они оба станут ../bar/x
, и мы видим, что они действительно ссылаются на одно и то же.
Короче говоря, часто бывает, что у вас есть много способов обратиться к одной вещи, и в этом случае вы сможете определить каноническое представление, которое является уникальным и которое позволяет вам получить дескриптор col & shy; lections таких вещей.
(Если вы ищете больше примеров, вся математика полна "канонических" конструкций для всех видов объектов и очень с той же целью. Возможно, это Статья в Википедии может предоставить некоторые рекламные и застенчивые направления.)
Ответ 2
Хорошим способом определения канонического пути будет: the shortest absolute path
(короткий, по смыслу длины строки).
Это пример разницы между абсолютным путем и каноническим путем:
абсолютный путь: C:\abc\..\abc\file.txt
канонический путь: C:\abc\file.txt
Ответ 3
Какой канонический путь (или его отличие от абсолютного пути) зависит от системы.
Обычно, если (полный) путь содержит псевдонимы, ярлыки или символические ссылки, канонический путь разрешает все это в фактические каталоги, на которые они ссылаются.
Пример: если /bin/a
является символической ссылкой, вы можете найти ее в любом месте, где вы запрашиваете абсолютный путь, например. из java.io.File # getAbsolutePath, в то время как реальный файл (то есть действительный объект ссылки), т.е. usr/local/bin/a
, будет возвращаться как канонический путь, например. из java.io.File # getCanonicalPath