Как да получите файловото разширение на файл в Java

1. Общ преглед

В този бърз урок ще покажем как програмно да получите разширението на файла в Java. Ще се спрем на три основни подхода към проблема.

В нашите реализации, символите след окончателното ' .' ще бъдат върнати.

Следователно, като бърз пример, ако името на нашия файл е jarvis.txt, тогава той ще върне Stringtxt” като разширение на файла.

2. Получаване на разширението на файла

За всеки подход ще научим как да го прилагаме и ще проследим какво се случва в два специални случая:

  • когато име на файл няма разширения, като файл на makefile
  • и ако името на файла се състои от само разширението, като .gitignore или .DS_Store.

2.1. Подход за опростена обработка на низове

С този подход ще използваме прост подход за обработка на низове за намиране на разширението:

public Optional getExtensionByStringHandling(String filename) { return Optional.ofNullable(filename) .filter(f -> f.contains(".")) .map(f -> f.substring(filename.lastIndexOf(".") + 1)); } 

Този метод ще провери за точката '.' поява в даденото име на файл.

Ако съществува, тогава ще намери последната позиция на точката '.' и върнете символите след това, символите след последната точка '.' известно като разширение на файла.

Специални случаи:

  1. Без разширение - този метод ще върне празен низ
  2. Само разширение - този метод ще върне String след точката, например „gitignore“

2.2. FilenameUtils.getExtension от Apache Commons IO

Във втория подход ще намерим разширението, като използваме полезен клас, предоставен от библиотеката на Apache Commons IO:

public String getExtensionByApacheCommonLib(String filename) { return FilenameUtils.getExtension(filename); }

Тук вместо името на файла можем да посочим и пълния път към файл, напр.C: /baeldung/com/demo.java “.

Методът getExtension (String) ще провери дали даденото име на файл е празно или не.

Ако името на файла е празно или пусто, getExtension (String filename) ще върне екземпляра, който е даден. В противен случай връща разширение на името на файла.

За целта използва метода indexOfExtension (String), който от своя страна използва lastIndexof (char), за да намери последното появяване на '.'. И двата метода се предоставят от FilenameUtils .

Този метод също така проверява дали няма разделител на директории след последната точка, като използва друг метод indexOfLastSeparator (String), който ще обработва файл във формат Unix или Windows.

Специални случаи:

  1. Без разширение - този метод ще върне празен низ.
  2. Само разширение - този метод ще върне String след точката, например „gitignore“

2.3. Използване на библиотеката Гуава

В този последен подход ще използваме библиотеката Guava, за да намерим разширението.

За да добавим библиотека Guava, можем да добавим следната зависимост към нашия pom.xml:

 com.google.guava guava 24.1.1-jre 

За най-новата зависимост можем да проверим Maven Central.

След добавяне на библиотеката можем просто да използваме нейния метод getFileExtension :

public String getExtensionByGuava(String filename) { return Files.getFileExtension(filename); } 

Методът getFileExtension (String) първо ще провери дали даденото име на файл е празно.

Ако името на файла не е празна, а след това тя ще създаде файла например чрез превръщане на дадено името на файла в абстрактен името на пътя и покана от песента getName () метод над него, който ще се върне името на обозначени с този абстрактен името на пътя файл, или празен низ, ако даденото име на файл е празно.

Въз основа на тази възвръщаема стойност той извлича индекса на последното появяване на '.' чрез използване на String клас вграден метод lastIndexOf (char) .

Специални случаи:

  1. Без разширение - този метод ще върне празен низ
  2. Само разширение - този метод ще върне String след точката, например „gitignore“

3. Заключение

Когато избирате между Apache Commons и Guava , докато двете библиотеки имат някои общи характеристики и те също имат функционалност, която отсъства от тяхната алтернатива.

Това означава, че ако се изисква определена функционалност, изберете тази, която я има. В противен случай, ако се изискват повече персонализирани сценарии, изберете този, който прави най-много това, от което се нуждаете, и не се колебайте да го обгърнете със собствената си реализация, за да получите желания резултат.

Също така вижте всички примери в тази статия за Github.