Последнее время у меня много работы с файлами на Java, особенно часто приходится программно узнавать расширение файла, поэтому решил поделиться простым способом сделать это на Java.
Как узнать расширение файла в Java. Теория
Мне часто приходится обрабатывать файлы по разному в зависимости от его типа, но в java.io.File
нет ни единого встроенного метода для получения расширения файла. Именно поэтому здесь я предлагаю вам свой простой протестированный способ получить расширение файла в Java.
Как получить расширение файла. Практика
Эта программа показывает в работе метод получения расширения файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package ua.com.prologistic; import java.io.File; public class GetFileExtension { public static void main(String[] args) { File file = new File("/Users/prologistic/java.txt"); System.out.println("Расширение файла: " + getFileExtension(file)); //проверяем метод на файле без расширения file = new File("/Users/prologistic/temp"); System.out.println("Расширение файла: " + getFileExtension(file)); //проверяем метод на файле с точкой в имени file = new File("/Users/prologistic/java.util.txt"); System.out.println("Расширение файла: " + getFileExtension(file)); //проверяем метод на файле без расширения file = new File("/Users/prologistic/.htaccess"); System.out.println("Расширение файла: " + getFileExtension(file)); } //метод определения расширения файла private static String getFileExtension(File file) { String fileName = file.getName(); // если в имени файла есть точка и она не является первым символом в названии файла if(fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) // то вырезаем все знаки после последней точки в названии файла, то есть ХХХХХ.txt -> txt return fileName.substring(fileName.lastIndexOf(".")+1); // в противном случае возвращаем заглушку, то есть расширение не найдено else return ""; } } |
Результат выполнения программы:
1 2 3 4 |
Расширение файла: txt Расширение файла: Расширение файла: txt Расширение файла: |
Обратите внимание, что здесь я не проверял, если файл ли файл вообще. Имейте ввиду, что в реальных программах вы должны проверить, что файл существует. И только после этого проводить какие-то манипуляции с этим файлом.
Спасибо!
Как то сложно… вот вариант попроще
private static String getFileExtension(File file) {
if(file.isFile()){
String[] sp = file.getName().split(«\\.»);
return sp[sp.length — 1];
}
return «»;
}
Можно же endsWith() использовать. И не нужно методы отдельные писать.