Как проверить расширение пути Java 7
Я хотел бы проверить, если a путь (введено в Java 7) заканчивается определенным расширением. Я попробовал endsWith()
метод вот так:
Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
//Do stuff
}
однако, это, кажется, не работает, потому что path.endsWith(".java")
возвращает false. Кажется, что endsWith()
метод возвращает true только в том случае, если есть полное совпадение для всего после окончательного разделителя каталогов (например,bar.java
), что для меня непрактично.
так как я могу проверить расширение файла пути?
4 ответа:
Ява НИО по PathMatcher предоставляет файловой системы.getPathMatcher (String syntaxAndPattern):
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java"); Path filename = ...; if (matcher.matches(filename)) { System.out.println(filename); }
посмотреть Найти Файлы учебник для деталей.
The
Path
класса нет понятия "расширение", вероятно, потому, что сама файловая система не имеет его. Именно поэтому вам нужно проверить егоString
представление и посмотреть, если он заканчивается начетырепять строка символов.java
. Обратите внимание, что вам нужно другое сравнение, чем простоendsWith
если вы хотите покрыть смешанный случай, то как".JAVA"
и".Java"
:path.toString().toLowerCase().endsWith(".java");
простое решение:
if( path.toString().endsWith(".java") ) //Do something
вы должны быть осторожны, при использовании пути.метод endsWith. Как вы уже сказали, метод вернет правда только если он совпадает с подэлементом Вашего объекта Path. Например:
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