0Pricing
Java Academy · 강의

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/config

relativize: 상대 경로 계산

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.txt

normalize: 불필요한 요소 제거

normalize()는 경로에서 . 및 .. 요소를 제거합니다:

Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txt

startsWith와 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")); // true

File 및 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 iteration

subpath: 일부 경로 추출

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Path: 파일 위치 표현
  2. Files 유틸리티: 읽기, 쓰기, 복사, 이동
  3. Files.walk로 디렉터리 트리 순회
  4. WatchService: 파일 변경 모니터링
← Java Academy(으)로 돌아가기