Path (Java 7에서 도입 됨)가 특정 확장으로 끝나는 지 확인하고 싶습니다 . 나는 다음 endsWith()
과 같은 방법을 시도했다 .
Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
//Do stuff
}
그러나 이것은 path.endsWith(".java")
false를 반환 하기 때문에 작동하지 않는 것 같습니다 . 이 endsWith()
메서드는 최종 디렉터리 구분 기호 (예 🙂 다음에 모든 항목이 완전히 일치하는 경우에만 true를 반환 하는 것 같습니다 bar.java
.
그렇다면 Path의 파일 확장자를 어떻게 확인할 수 있습니까?
답변
Java NIO의 PathMatcher 는 FileSystem.getPathMatcher (String syntaxAndPattern)를 제공합니다 .
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
Path filename = ...;
if (matcher.matches(filename)) {
System.out.println(filename);
}
자세한 내용은 파일 찾기 튜토리얼을 참조하십시오.
답변
Path
파일 시스템 자체가없는 탓 클래스는, “확장”의 개념이 없습니다. 그렇기 때문에 String
표현 을 확인하고 4 개의 5 개 문자열로 끝나는 지 확인해야 합니다 .java
. 및 다음 endsWith
과 같은 혼합 대소 문자를 포함하려면 단순 비교와 다른 비교가 필요합니다 .".JAVA"
".Java"
path.toString().toLowerCase().endsWith(".java");
답변
간단한 솔루션 :
if( path.toString().endsWith(".java") ) //Do something
Path.endsWith 메서드를 사용할 때주의해야합니다. 언급했듯이이 메서드는 Path 개체의 하위 요소와 일치하는 경우에만 true 를 반환 합니다. 예를 들면 :
Path p = Paths.get("C:/Users/Public/Mycode/HelloWorld.java");
System.out.println(p.endsWith(".java")); // false
System.out.println(p.endsWith("HelloWorld.java")); // true
답변
Path 개체 자체에서이 작업을 직접 수행 할 수있는 방법은 없습니다.
볼 수있는 두 가지 옵션이 있습니다.
- 경로를 파일로 변환하고 File.getName ()에서 반환 된 문자열에 대해 endsWith를 호출합니다.
- 경로에서 toString을 호출하고 해당 문자열에서 endsWith를 호출하십시오.