Java 7+에서는 이전 답변 중 몇 가지를 결합 하여 마지막 세그먼트가 아닌 URI에서 모든 경로 세그먼트를 검색 할 수 있습니다 . 메서드를 java.nio.file.Path
활용하기 위해 URI를 객체 로 변환 할 수 있습니다 getName(int)
.
불행히도 정적 팩토리 Paths.get(uri)
는 http 체계를 처리하도록 구축되지 않았으므로 먼저 체계를 URI 경로에서 분리해야합니다.
URI uri = URI.create("http://base_path/some_segment/id");
Path path = Paths.get(uri.getPath());
String last = path.getFileName().toString();
String secondToLast = path.getName(path.getNameCount() - 2).toString();
한 줄의 코드에서 마지막 세그먼트를 가져 오려면 위 줄을 중첩하면됩니다.
Paths.get(URI.create("http://base_path/some_segment/id").getPath()).getFileName().toString()
인덱스 번호와 오프 바이 원 오류 가능성을 피하면서 마지막에서 두 번째 세그먼트를 얻으려면 getParent()
방법을 사용하십시오 .
String secondToLast = path.getParent().getFileName().toString();
메모 getParent()
방법은 역순으로 세그먼트를 검색하기 위해 반복적으로 호출 할 수 있습니다. 이 예에서 경로에는 두 개의 세그먼트 만 포함됩니다. 그렇지 않으면 호출 getParent().getParent()
하면 마지막에서 세 번째 세그먼트를 검색합니다.