Есть ли новый способ поиска в формате Java 8 для расширения файла?

То, что я делал до сих пор, следующее:

String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);

System.out.printf("'%s'%n", ext); // prints: 'txt'

Есть ли более удобный способ в Java 8?

Ответы

Ответ 2

Нет, в JDK нет более эффективного/удобного способа, но многие библиотеки предоставляют вам готовые методы для этого, такие как Guava: Files.getFileExtension(fileName) который Files.getFileExtension(fileName) ваш код в один метод (с дополнительной проверкой).

Ответ 3

Не Java8, но вы всегда можете использовать FilenameUtils.getExtension() из библиотеки Apache Commons.:)

Ответ 4

На самом деле, существует новый способ думать о возврате расширений файлов в Java 8.

Большинство "старых" методов, описанных в других ответах, возвращают пустую строку, если расширение отсутствует, и хотя это позволяет избежать исключений NullPointerExceptions, легко забыть, что не все файлы имеют расширение. Возвращая Optional, вы можете напомнить себе об этом факте, а также можете сделать различие между именами файлов с пустым расширением (точка в конце) и файлами без расширения (без точки в имени файла)