Kako dobiti ekstenziju datoteke na Javi

1. Pregled

U ovom brzom vodiču pokazat ćemo kako programski dobiti ekstenziju datoteke na Javi. Usredotočit ćemo se na tri glavna pristupa problemu.

U našim implementacijama, znakovi nakon konačnog ".' bit će vraćen.

Stoga, kao brzi primjer, ako je naše ime datoteke jarvis.txt tada će vratiti Niztxt " kao nastavak datoteke.

2. Dobivanje ekstenzije datoteke

Za svaki pristup naučit ćemo kako ga primijeniti i pratiti što se događa u dva posebna slučaja:

  • kada naziv datoteke nema nastavke, kao što je makefile datoteka
  • i ako se naziv datoteke sastoji samo od nastavka, kao što je .gitignore ili .DS_Store.

2.1. Jednostavan Niz Pristup rukovanju

Uz ovaj pristup koristit ćemo jednostavan Niz pristup rukovanju pronalaskom produžetka:

javno Neobavezno getExtensionByStringHandling (string naziv datoteke) {return Opcionalno.ofNullable (ime datoteke) .filter (f -> f.contains (".") .map (f -> f.substring (filename.lastIndexOf (".") + 1 )); } 

Ova metoda provjerit će točku ‘.’ pojava u danom imenu datoteke.

Ako postoji, tada će pronaći posljednji položaj točke '.' i vratite znakove nakon toga, znakove nakon posljednje točke '.' poznat kao nastavak datoteke.

Posebni slučajevi:

  1. Bez produženja - ova će metoda vratiti prazno Niz
  2. Samo produženje - ova metoda će vratiti Niz iza točke, na pr. "Gitignore"

2.2. FilenameUtils.getExtension iz Apache Commons IO

U drugom pristupu pronaći ćemo proširenje pomoću klase uslužnih programa koju pruža Apache Commons IO knjižnica:

javni String getExtensionByApacheCommonLib (Niz datoteke naziv) {return Ime datotekeUtils.getExtension (naziv datoteke); }

Ovdje umjesto naziva datoteke možemo odrediti i puni put do datoteke npr.C: /baeldung/com/demo.java“.

Metoda getExtension (niz) provjerit će je li zadani naziv datoteke je prazan ili nije.

Ako naziv datoteke je prazno ili ništavno, getExtension (naziv datoteke niza) vratit će instancu koju je dobio. U suprotnom, vraća ekstenziju imena datoteke.

Za to koristi metodu indexOfExtension (niz) koja se pak koristi lastIndexof (char) kako bi pronašli posljednju pojavu ".". Obje ove metode pruža Naziv datotekeUtils.

Ova metoda također provjerava da nema separatora direktorija nakon posljednje točke pomoću druge metode indexOfLastSeparator (String), koja će obraditi datoteku u bilo Unix ili Windows formatu.

Posebni slučajevi:

  1. Bez produženja - ova metoda vratit će prazan niz.
  2. Samo produženje - ova metoda će vratiti Niz iza točke, na pr. "Gitignore"

2.3. Korištenje knjižnice Guava

U ovom zadnjem pristupu koristit ćemo knjižnicu Guava kako bismo pronašli proširenje.

Da bismo dodali Guava knjižnicu, u našu možemo dodati sljedeću ovisnost pom.xml:

 com.google.guava guava 24.1.1-jre 

Za najnoviju ovisnost možemo provjeriti Maven Central.

Nakon dodavanja knjižnice možemo jednostavno koristiti njezinu getFileExtension metoda:

javni String getExtensionByGuava (string ime datoteke) {return Files.getFileExtension (naziv datoteke); } 

Metoda getFileExtension (niz) prvo će provjeriti je li zadani naziv datoteke prazno je.

Ako je naziv datoteke nije prazan, tada će stvoriti Datoteka primjer pretvaranjem zadanog naziv datoteke u apstraktni naziv puta i poziv DatotekegetName () preko nje, koja će vratiti ime datoteke označeno ovom apstraktnim nazivom puta, ili prazan niz ako je dan naziv datoteke prazno je.

Na temelju ove povratne vrijednosti dohvaća indeks posljednjeg pojavljivanja znaka '.' pomoću Niz klasa ugrađena metoda lastIndexOf (char).

Posebni slučajevi:

  1. Bez proširenja - ova će metoda vratiti prazno Niz
  2. Samo produženje - ova metoda će vratiti Niz iza točke, na pr. "Gitignore"

3. Zaključak

Pri odabiru između Apachea Zajedničko i Guava, dok obje knjižnice imaju neke zajedničke značajke, a imaju i funkcionalnost koja nedostaje njihovoj alternativi.

To znači da ako je potrebna određena funkcionalnost, odaberite onu koja je ima. U suprotnom, ako je potrebno više prilagođenih scenarija, odaberite onaj koji čini najviše ono što vam treba i slobodno ga umotajte vlastitom implementacijom da biste dobili željeni rezultat.

Također, pogledajte sve primjere u ovom članku o Githubu.