Path — 경로 인터페이스
Path — 경로 인터페이스
파일 시스템에서 파일을 찾는 데 사용할 수 있는 객체를 나타내는 인터페이스예요. 보통 시스템에 의존적인 파일 경로를 나타내요. Path는 계층적이며 특별한 구분자(separator)나 구분 기호(delimiter)로 구분된 일련의 디렉터리와 파일 이름 요소들로 구성된 경로를 나타내요. 파일 시스템 계층을 식별하는 루트 구성 요소(root component)도 있을 수 있어요. 디렉터리 계층의 루트에서 가장 먼 이름 요소가 파일이나 디렉터리의 이름이고, 나머지 이름 요소들은 디렉터리 이름이에요.
본문
빈 이름 요소 하나로만 구성된 경로를 빈 경로(empty path)라고 해요. 빈 경로로 파일에 접근하는 것은 파일 시스템의 기본 디렉터리에 접근하는 것과 같아요. Path는 getFileName, getParent, getRoot, subpath 메서드로 경로 구성 요소나 이름 요소의 부분 시퀀스에 접근하고, resolve와 resolveSibling으로 경로를 결합하며, relativize로 두 경로 사이의 상대 경로를 만드는 등 다양한 연산을 제공해요.
경고: 이 인터페이스는 사용자 정의 파일 시스템 구현을 개발하는 사람만 구현하도록 의도됐어요. 향후 릴리스에서 이 인터페이스에 메서드가 추가될 수 있어요.
주요 메서드
static Path of(String first, String... more)— 경로 문자열 또는 조합하면 경로 문자열이 되는 일련의 문자열을Path로 변환해요.static Path of(URI uri)— URI를Path로 변환해요.FileSystem getFileSystem()— 이 객체를 만든 파일 시스템을 반환해요.boolean isAbsolute()— 이 경로가 절대 경로인지 여부를 반환해요.Path getRoot()— 이 경로의 루트 구성 요소를 반환하거나, 없으면null을 반환해요.Path getFileName()— 이 경로가 나타내는 파일이나 디렉터리의 이름을 반환해요. 빈 경로면null을 반환해요.Path getParent()— 이 경로의 부모 경로를 반환하거나, 부모가 없으면null을 반환해요.int getNameCount()— 경로의 이름 요소 개수를 반환해요.Path getName(int index)— 이 경로의 이름 요소를 반환해요.Path subpath(int beginIndex, int endIndex)— 이 경로의 이름 요소들의 부분 시퀀스를 반환해요.boolean startsWith(Path other)— 이 경로가other로 시작하는지 여부를 반환해요.boolean startsWith(String other)— 이 경로가 주어진 경로 문자열로 시작하는지 여부를 반환해요.boolean endsWith(Path other)— 이 경로가other로 끝나는지 여부를 반환해요.boolean endsWith(String other)— 이 경로가 주어진 경로 문자열로 끝나는지 여부를 반환해요.Path normalize()— 이 경로에서 중복 이름 요소를 제거한 정규화된 경로를 반환해요.Path resolve(Path other)— 이 경로와other를 결합한 경로를 반환해요.Path resolve(String other)— 이 경로와 주어진 경로 문자열을 결합한 경로를 반환해요.Path resolveSibling(Path other)— 이 경로의 형제 경로를other로 대체해 반환해요.Path resolveSibling(String other)— 형제 경로를 주어진 문자열로 대체해 반환해요.Path relativize(Path other)— 이 경로와other사이의 상대 경로를 구성해 반환해요.URI toUri()— 이 경로를 나타내는 URI를 반환해요.Path toAbsolutePath()— 이 경로의 절대 경로를 반환해요.Path toRealPath(LinkOption... options) throws IOException— 기존 파일의 실제 경로를 반환해요.File toFile()— 이 경로를 나타내는File객체를 반환해요.WatchKey register(WatchService watcher, WatchEvent.Kind<?>... events) throws IOException— 이 경로가 있는 디렉터리를 감시 서비스에 등록해요.Iterator<Path> iterator()— 이 경로의 이름 요소들을 반복하는 반복자를 반환해요.int compareTo(Path other)— 두 경로를 사전순으로 비교해요.boolean equals(Object other)— 이 경로가 다른 경로와 같은지 여부를 반환해요.int hashCode()— 이 경로의 해시 코드를 계산해요.String toString()— 이 경로의 문자열 표현을 반환해요.
파일 접근 예시
Files 클래스와 함께 사용해 파일·디렉터리·다른 유형의 파일에 연산을 수행할 수 있어요. 예를 들어 현재 작업 디렉터리 상대의 logs 디렉터리에 있는 access.log 파일에서 텍스트를 읽는 BufferedReader를 만든다면 다음과 같아요.
Path path = FileSystems.getDefault().getPath("logs", "access.log");
BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);