원본 파일 : /home/user/original.txt
심볼릭 링크 : /home/user/link.txt
link.txt는 실제 파일이 아닌 참조링크 (= 바로가기 같은 것?)
참고 : 심볼릭 링크 알아보기 ( Symbolic Link )
+경로에 점(., ..)이나 심볼릭 링크가 없으면 → 절대경로 = 정규경로
- OS별 경로 표시 다름
리눅스/맥 :/home/user/docs/report.txt
윈도우 :C:\Users\User\docs\report.txt
: 실제 파일 시스템에서 해석된 유일한 경로
(오직 하나, 기호와 링크도 실제 위치로 해석)
/shortcut/data.txt경로가 있고,
shortcut → /real/data.txt로 연결된 경우
/real/data.txt처럼 링크를 해석해서 언제나 동일한 경로가 나오는 것
: 루트부터 전부 명시한 경로
위의 정규경로에서 적은 것처럼 링크가 존재하는 경우,
/home/user/real/data.txt
/home/user/link/data.txt
둘 다 같은 경로이지만, 개별적인 절대 경로로 존재할 수 있다.
: '현재 위치를 기준'으로 본 해당 위치(파일)까지의 경로
(실행 위치에 따라 달라짐)
.으로 현재 위치를, ..으로 상위 디렉토리를 나타내는 등
상대적인 위치를 사용하여 간결하게 표현
/home/user/real/data.txt 인 경우 :
| 현재 위치 | 상대경로 | 표현설명 |
|---|---|---|
| /home/user/real | data.txt (= ./data.txt) | 바로 접근 가능 |
| /home/user/ | real/data.txt | user 폴더 안 real/data.txt |
| /home/ | user/real/data.txt | home 폴더 안 user/real/data.txt |
| /home/user/another | ../real/data.txt | 한 단계 위(=user)로 올라가서 real 폴더 접근 |
( ./ 부분은 현재 위치니까 작성해도, 안해도 동일 )
: 파일의 한 단계 위 상위폴더
/home/user/docs/file.txt에 있는 경우 (리눅스식
부모경로 :/home/user/docs
한 단계 위 부모경로 :/home/user
java 예시 :
Path p = Paths.get("/home/user/docs/file.txt"); p.getParent(); // /home/user/docs, 부모경로 p.getParent().getParent(); // /home/user, 한 단계 위 부모 경로
- <절대경로 ≠ 정규경로 인 경우>
1. 상대경로(getPath): .\week11\P1\FileTest.java 2. 절대경로(getAbsolutePath): E:\JWorks\IntelliJ\CP2\.\week11\P1\FileTest.java 3. 정규경로(getCanonicalPath): E:\JWorks\IntelliJ\CP2\week11\P1\FileTest.java
- <절대경로 = 정규경로 인 경우>
1. 상대경로(getPath): week11\P1\FileTest.java 2. 절대경로(getAbsolutePath): E:\JWorks\IntelliJ\CP2\week11\P1\FileTest.java // 경로에 . 같은 게 없어서 절대경로 = 정규경로 3. 정규경로(getCanonicalPath): E:\JWorks\IntelliJ\CP2\week11\P1\FileTest.java