[java] Java 7 경로의 확장을 확인하는 방법

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의 PathMatcherFileSystem.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 개체 자체에서이 작업을 직접 수행 할 수있는 방법은 없습니다.

볼 수있는 두 가지 옵션이 있습니다.

  1. 경로를 파일로 변환하고 File.getName ()에서 반환 된 문자열에 대해 endsWith를 호출합니다.
  2. 경로에서 toString을 호출하고 해당 문자열에서 endsWith를 호출하십시오.


답변