Как проверить расширение пути 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