프로그래밍을 할 때 외부 파일을 읽어야 하는 상황에 많이 직면하게 된다.
외부 파일을 읽기 위해서는 파일 경로를 입력하면 되는데, 파일 경로를 철자 하나라도 잘못 쓰면 파일을 읽을 수 없다. 처음 접해봤을 때는 까다로울 수 있는데 이해만 하면 쉬우므로 프로그래머라면 무조건 짚고 넘어가야할 개념이다.
이 포스팅에서는 혼동하기 쉬운 파일 경로 개념을 다룰 것이다.
이해를 돕기 위해 개념을 설명하기 전에 몇 가지 폴더 정의를 해보겠다.
현재 폴더의 상위 폴더를 Parent 폴더, Parent 폴더의 상위 폴더를 Grantparent 폴더라고 하자.
그리고 현재 폴더의 하위 폴더를 Child 폴더, Child 폴더의 하위 폴더를 Grandchild 폴더라고 하자.
즉 상위 부모 순으로 나열하면
Grandparent, Parent, 현재 폴더, Child, Grandchild 순이 된다.
처음에 Grandparent 폴더는 바탕화면에서 생성하였다.
위 설명대로라면 Grandparent 폴더 안에 Parent 폴더가 있을 것이다.
그 옆에 family1.txt 파일을 만들었다.
즉 Grandparent 폴더 안에는 Parent 폴더, family1.txt 두 요소가 있다.
그 하위폴더를 따라가며 같은 규칙으로 family2~family5 까지 만들었다.
세팅은 끝났고 이제 본격적으로 절대주소와 상대주소를 설명할 차례이다.
1. 절대주소 - 어느 디렉토리에 있든 간에 인식되는 주소, 통일 주소
family5.txt 파일의 속성에 들어가보면 위치가
C:\Users\user\Desktop\Grandparent\Parent\현재 폴더\Child\Grandchild 으로 표시 되어있다.
사용자가 어느 디렉토리에서 작업을 하든간에 family5.txt 파일을 불러오고 싶을 때는
C:\Users\user\Desktop\Grandparent\Parent\현재 폴더\Child\Grandchild\family5.txt 라는 경로를 쓰면 된다.
2. 상대주소 - 디렉토리의 위치에 따라 달라지는 주소
파일을 불러올 때 사용자가 어느 디렉토리에서 작업을 하느냐에 따라, 경로 양식은 조금 달라진다.
상대 주소는 폴더를 구별할 때 ../ 또는 ./를 쓰게 된다.
../는 상위 폴더로 이동한다는 의미이고, ./는 현재 폴더를 의미한다.
단, ./는 생략해도 동작하는 것 같다.
예1)
작업 중인 디렉토리는 '현재 폴더' 안 이고, family1.txt 파일을 불러오고 싶을 때는 파일주소를 ../../family1.txt 로 쓴다.
family1.txt는 현재 폴더의 상위 폴더(Parent) 의 상위 폴더(Grandparent)에 위치해 있기 때문이다.
예2)
작업 중인 디렉토리는 '현재 폴더' 안 이고, family5.txt 파일을 불러오고 싶을 때는 파일주소를
./child/Grandchild/family5.txt 로 쓴다. 하위 폴더는 단순히 / 로 구별하면 된다.
./를 생략하고 child/Grandchild/family5.txt 로 써도 동작 한다.
예3)
작업 중인 디렉토리는 '현재 폴더' 안 이고, 현재 폴더의 family3.txt를 불러오고 싶을 때는 파일주소를 ./family3.txt로 써도 되고 그냥 family3.txt로만 써도 된다.
'유용한 정보, 링크' 카테고리의 다른 글
C++ Vector 사용법 (0) | 2020.09.11 |
---|---|
C++ Vector 중복 요소 제거하기 (0) | 2020.09.11 |
코드 실행시간 단축시키는 꿀팁 (C++) (0) | 2020.08.17 |
큰 값을 나눗셈하는 소스코드 작성 시 주의할 점 (0) | 2020.08.17 |
개발자들을 위한 무료 이미지 사이트 (1) | 2020.08.04 |
댓글