C:\Users\Desktop\etc\text.txt
라는 경로를 찾거나 Absolute path를 묻는 메소드를 써 본 적이 있을 것이다. 파일의 경로라는 것을 알지만 왜 그냥 경로가 아닌 절대 경로라는 이름이 붙었는지, 상대 경로는 뭔지에 대해선 가물가물하다. 그래서 조금이나마 정리 해 둔다.C:\Users\Desktop\etc\text.txt
와 같이 해당 경로만 있으면 컴퓨터가 파일을 찾을 수 있다. 컴퓨터의 시작점(최상위 폴더)부터 파일까지의 모든 경로를 표시한다. Mac의 경우 /Users/User_name/Desktop/etc/text.txt
가 된다.etc\text.txt
만 가지고 있다면 컴퓨터는 이걸 보고 찾아갈 수 없다. 하지만 이렇게 일부 경로만 가지고 기준 경로를 잡아 파일을 찾는 방식이 있다.C:\Users\Desktop
이면 etc\text.txt
의 경로만 가지고 파일을 찾아갈 수 있다. 여기서 컴퓨터는 C:\Users\Desktop\etc\text.txt
로 찾아서 가는 것이다./
: 최상위 경로./
: 현재 디렉토리 경로../
: 상위 디렉토리 경로절대 경로는 소스 코드에서 한 번 지정해주면 나중에 경로가 바뀌게 되면 오류가 난다는 것이다. 하지만 상대경로는 기준 디렉토리만 바뀌고 소스 코드 내에선 현재 디렉토리 경로에서 찾을 파일의 경로만 설정되어 있어 기준 경로가 바뀌더라도 수정할 필요가 없게 된다.
어찌하든 상황에 맞게 설정하는 거라 보면 된다.
좋은 예인지는 모르겠지만 Java lib를 말하자면, Library에 jar을 import할 때 경로를 외부 경로로 지정해줄지 아니면 내부 경로로 지정해줄지 방법이 2가지다. 이때 외부로 지정해주면 프로젝트 파일이 다른 컴퓨터로 또는 위치가 이동할 때 경로가 바뀌어 오류가 날 수 있다. 하지만 내부 경로로 하게 되면 상위 디렉토리는 움직여도 내부의 디렉토리를 기준으로 jar파일을 찾기 때문에 영향이 가지 않는다.
이런 부분을 아는 이유는, 길지만 눈물 젖은 이야기가 있읍니다. 들어보시렵니까?
참고
저도 눈물나요....흑흑...