[path] “표준 경로”란 무엇입니까?

따라서 절대 경로는 전체 경로, 전체 경로를 설명하는 특정 파일 또는 위치에 도달하는 방법이며 OS에 따라 다릅니다 (예 : Windows 및 Linux의 절대 경로는 다름). 상대 경로입니다. 현재 위치에서 설명 된 파일 또는 위치로 경로를 지정합니다. .. (점 2 개) 디렉터리 트리에서 상위 수준을 나타냅니다. 그것은 몇 년 동안 저에게 분명했습니다.

검색 할 때도 정규화 된 파일이있는 것을 보았습니다! 내가 아는 모든 것이 CANONICAL이라는 것은 “규칙에 따라”같은 것을 의미합니다.

누군가가 규범적인 것에 대한 이론의 열에서 나를 깨달을 수 있습니까?



답변

만들기의 요점 무엇이든은 “표준”당신이 두 가지를 비교할 수있다. 예를 들어, 모두 ../../here/bar/x./test/../../bar/x같은 위치로 참조 할 수 있습니다,하지만 당신은 두 경로에 텍스트 비교를 할 수 없습니다. 그러나 그것들을 표준 표현으로 바꾸면 둘 다가되고 ../bar/x실제로 동일한 것을 참조한다는 것을 알 수 있습니다.

즉, 종종 당신이 한 일을 참조하는 여러 가지 방법을 가지고있는 경우이며,이 경우에 당신은 정의 할 수 있습니다 정규 표현 입니다 독특한 당신이 그런 것들의 집합에 핸들을 얻을 수있는합니다.

(더 많은 예제를 찾고 있다면 모든 수학은 모든 종류의 물체에 대한 “정규”구조로 가득 차 있으며 동일한 목적을 염두에두고 있습니다.이 Wikipedia 기사에서 몇 가지 추가 지침을 제공 할 수 있습니다.)


답변

표준 경로를 정의하는 좋은 방법은 다음과 같습니다. the shortest absolute path(짧은 문자열 길이 의미).

다음은 절대 경로와 표준 경로의 차이점에 대한 예입니다.

절대 경로 : C:\abc\..\abc\file.txt
표준 경로 :C:\abc\file.txt


답변

표준 경로 (또는 절대 경로와의 차이점)는 시스템에 따라 다릅니다.
일반적으로 (전체) 경로에 별칭, 바로 가기 또는 심볼릭 링크가 포함 된 경우 표준 경로는 이러한 모든 것을 참조하는 실제 디렉토리로 확인합니다.
예 : /bin/a심볼 링크 인 경우 절대 경로를 요청하는 곳이면 어디에서나 찾을 수 있습니다. 예를 들어 java.io.File # getAbsolutePath 에서 실제 파일 (즉, 링크의 실제 대상) usr/local/bin/a은 표준 경로로 반환됩니다. 에서 java.io.File에 # getCanonicalPath


답변

표준 경로와 관련된 대부분의 문제는 파일이 아닌 dir의 이름을 전달할 때 발생합니다. 파일의 경우 표준 경로이기도 한 절대 경로를 제공하는 경우. 그러나 dir의 경우 마지막 “/”를 생략하는 것을 의미합니다. 예를 들어, “/ var / tmp / foo”는 표준 경로이고 “/ var / tmp / foo /”는 그렇지 않습니다.


답변