Получение расширения файла из имени файла
<code>/**
* The extension separator character.
*/
private static final char EXTENSION_SEPARATOR = '.';
/**
* The Unix separator character.
*/
private static final char UNIX_SEPARATOR = '/';
/**
* The Windows separator character.
*/
private static final char WINDOWS_SEPARATOR = '\\';
/**
* The system separator character.
*/
private static final char SYSTEM_SEPARATOR = File.separatorChar;
/**
* Gets the extension of a filename.
* <p>
* This method returns the textual part of the filename after the last dot.
* There must be no directory separator after the dot.
* <pre>
* foo.txt --> "txt"
* a/b/c.jpg --> "jpg"
* a/b.txt/c --> ""
* a/b/c --> ""
*
*
* Вывод будет одинаковым независимо от машины, на которой выполняется код.* * @param filename имя файла для получения расширения.* @ вернуть расширение файла или пустую строку, если таковой не существует.* / public static String getExtension (String filename) {if (filename == null) {return null;} int index = indexOfExtension (filename);if (index == -1) {return "";} else {return filename.substring (index + 1);}} / ** * Возвращает индекс последнего символа разделителя расширения, который является точкой.*
* Этот метод также проверяет отсутствие разделителя каталогов после последней точки.* Для этого он использует {@link #indexOfLastSeparator (String)}, который будет * обрабатывать файл в формате Unix или Windows.*
* Вывод будет одинаковым независимо от машины, на которой работает код.* * @param filename имя файла, в котором находится последний разделитель пути, null возвращает -1 * @ возврат индекса последнего символа разделителя или -1, если * такого символа нет * / public static int indexOfExtension (String filename){if (filename == null) {return -1;} int extensionPos = filename.lastIndexOf (EXTENSION_SEPARATOR);int lastSeparator = indexOfLastSeparator (имя файла);return (lastSeparator> extensionPos? -1: extensionPos);} / ** * Возвращает индекс последнего символа разделителя каталогов.*
* Этот метод будет обрабатывать файл в формате Unix или Windows.* Позиция последнего форварда или обратной косой черты возвращается.*
* Вывод будет одинаковым независимо от компьютера, на котором запущен код.* * @param filename имя файла, в котором находится последний разделитель пути, null возвращает -1 * @ возврат индекса последнего символа разделителя или -1, если * такого символа нет * / public static int indexOfLastSeparator (String filename){if (filename == null) {return -1;} int lastUnixPos = filename.lastIndexOf (UNIX_SEPARATOR);int lastWindowsPos = filename.lastIndexOf (WINDOWS_SEPARATOR);return Math.max (lastUnixPos, lastWindowsPos);}
Кредиты
- Скопировано из Apache FileNameUtils Class - http://grepcode.com/file/repo1.maven.org/maven2/commons-io/commons-io/1.3.2/org/apache/commons/io/FilenameUtils.java#FilenameUtils.getExtension%28java.lang.String%29