Path: 파일 위치 표현
Path 객체를 만들고 경로를 해석 및 상대화하며 경로 구성 요소를 조작합니다.
Path: 파일 위치 표현은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Path 소개
java.nio.file.Path 인터페이스는 파일 시스템에서 파일 또는 디렉터리 위치를 나타냅니다. 더 풍부하고 플랫폼에 독립적인 API를 제공하여 기존의 java.io.File 클래스를 대체합니다.
import java.nio.file.*;
Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");
System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // true경로 구성 요소
경로의 구성 요소를 추출해 보세요:
Path path = Path.of("/home/user/docs/report.txt");
System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent()); // /home/user/docs
System.out.println(path.getRoot()); // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0)); // home
System.out.println(path.getName(3)); // report.txt상대 경로와 절대 경로
경로는 절대 경로(루트에서 시작)일 수도 있고 상대 경로(현재 디렉터리 기준)일 수도 있습니다. isAbsolute()를 사용하여 확인하고, toAbsolutePath()를 사용하여 상대 경로를 현재 작업 디렉터리를 기준으로 해석하세요.
Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");
System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true
Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);resolve: 경로 결합
resolve(other)는 다른 경로를 뒤에 추가합니다. other가 절대 경로이면 현재 경로 전체를 대체합니다.
Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");
System.out.println(file); // /home/user/documents/report.txt
// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/configrelativize: 상대 경로 계산
relativize(other)는 현재 경로에서 other로 이동하는 상대 경로를 계산합니다:
Path from = Path.of("/home/user");
Path to = Path.of("/home/user/docs/report.txt");
Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt
// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txtnormalize: 불필요한 요소 제거
normalize()는 경로에서 . 및 .. 요소를 제거합니다:
Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txtstartsWith와 endsWith
경로 사이의 접두사 및 접미사 관계를 확인해 보세요:
Path p = Path.of("/home/user/docs/report.txt");
System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt")); // true
System.out.println(p.endsWith("docs/report.txt")); // trueFile 및 URI로 변환
필요한 경우 Path를 기존 File 클래스나 URI로 변환할 수 있습니다:
Path path = Path.of("/home/user/report.txt");
java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem
java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txt플랫폼별 Path
Path.of()는 플랫폼의 구분 기호를 사용합니다. Windows에서는 경로에 백슬래시를 사용하고 Unix에서는 슬래시를 사용합니다. 이 API가 이러한 차이를 투명하게 처리합니다.
// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);경로 요소 순회
for-each 루프 또는 iterator()를 사용하여 개별 이름 요소를 순회해 보세요:
Path path = Path.of("/home/user/docs/report.txt");
for (Path element : path) {
System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iterationsubpath: 일부 경로 추출
subpath(begin, end)는 이름 요소 범위에 해당하는 상대 경로를 반환합니다:
Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3
System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/user빠른 확인
Path.of("/home/user").resolve("docs/file.txt")가 주어졌을 때 결과는 무엇인가요?
복습: Path API
핵심 내용:
- Path.of() / Paths.get()으로 Path 인스턴스를 생성합니다
- getFileName, getParent, getRoot, getName, getNameCount로 구성 요소를 확인합니다
- resolve()는 추가하고, relativize()는 상대 경로를 계산하며, normalize()는 ./ 및 ../를 정리합니다
- 접두사 및 접미사 확인에는 startsWith/endsWith를 사용합니다
- 플랫폼에 독립적이며 구분 기호가 자동으로 처리됩니다
자주 묻는 질문
“Path: 파일 위치 표현” 강의는 무료인가요?
네 — “Path: 파일 위치 표현” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Path: 파일 위치 표현”에서 뭘 배우나요?
Path 객체를 만들고 경로를 해석 및 상대화하며 경로 구성 요소를 조작합니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Path: 파일 위치 표현” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.