Ako získať príponu súboru v Jave

1. Prehľad

V tomto rýchlom výučbe si ukážeme, ako programovo získať príponu súboru v Jave. Zameriame sa na tri hlavné prístupy k problému.

V našich implementáciách postavy po záverečnom ‘.' budú vrátené.

Preto ako rýchly príklad, ak je náš názov súboru jarvis.txt potom vráti StringTXT" ako prípona súboru.

2. Získanie prípony súboru

Pre každý prístup sa naučíme, ako ho implementovať, a pokračujeme v tom, čo sa stane, v dvoch špeciálnych prípadoch:

  • keď názov súboru nemá žiadne prípony, napríklad makefile spis
  • a ak sa názov súboru skladá iba z prípony, ako napr .gitignore alebo .DS_Store.

2.1. Jednoduché String Manipulačný prístup

S týmto prístupom použijeme jednoduchý String prístup pri hľadaní rozšírenia:

public Voliteľné getExtensionByStringHandling (Názov súboru reťazca) {návrat Voliteľné.ofNullable (názov súboru) .filter (f -> f.contains (".")) .map (f -> f.substring (názov súboru.lastIndexOf (".") + 1 )); } 

Táto metóda skontroluje bodku „.“ výskyt v danom názve súboru.

Ak existuje, nájde poslednú pozíciu bodky ‘.’ a potom vrátiť znaky, znaky za poslednou bodkou „.“ prípona súboru.

Špeciálne prípady:

  1. Bez rozšírenia - táto metóda vráti prázdny String
  2. Iba rozšírenie - táto metóda vráti String za bodkou, napr. „Gitignore“

2.2. FilenameUtils.getExtension od spoločnosti Apache Commons IO

V druhom prístupe nájdeme rozšírenie pomocou triedy nástrojov poskytovanej knižnicou Apache Commons IO:

public String getExtensionByApacheCommonLib (názov súboru reťazca) {návrat FilenameUtils.getExtension (názov súboru); }

Tu môžeme namiesto názvu súboru určiť aj úplnú cestu k súboru napr.C: /baeldung/com/demo.java“.

Metóda getExtension (reťazec) skontroluje, či dané názov súboru je prázdny alebo nie.

Ak názov súboru je prázdny alebo nulový, getExtension (názov súboru reťazca) vráti inštanciu, ktorá bola zadaná. V opačnom prípade vráti príponu názvu súboru.

Používa na to metódu indexOfExtension (reťazec) ktoré zasa využíva lastIndexof (char) nájsť posledný výskyt znaku „.“. Tieto metódy poskytuje FilenameUtils.

Táto metóda tiež kontroluje, či za poslednou bodkou neexistuje oddeľovač adresárov pomocou inej metódy indexOfLastSeparator (reťazec), ktorý bude pracovať so súborom vo formáte Unix alebo Windows.

Špeciálne prípady:

  1. Bez rozšírenia - táto metóda vráti prázdny reťazec.
  2. Iba rozšírenie - táto metóda vráti String za bodkou, napr. „Gitignore“

2.3. Používanie knižnice Guava

V tomto poslednom prístupe použijeme na nájdenie rozšírenia knižnicu Guava.

Ak chcete pridať knižnicu Guava, môžeme do našej pridať nasledujúcu závislosť pom.xml:

 com.google.guava guava 24.1.1-jre 

Najnovšiu závislosť môžeme skontrolovať v Maven Central.

Po pridaní knižnice môžeme jednoducho použiť jej getFileExtension metóda:

public String getExtensionByGuava (názov súboru reťazca) {návrat Files.getFileExtension (názov súboru); } 

Metóda getFileExtension (reťazec) najskôr skontroluje, či je dané názov súboru je prázdny.

Ak názov súboru nie je prázdny, vytvorí sa a Súbor napríklad prevedením daného názov súboru do abstraktného názvu cesty a zavolať SúborgetName () metóda, ktorá vráti názov súboru označený touto abstraktnou cestou, alebo prázdny reťazec, ak je daný názov súboru je prázdny.

Na základe tejto návratovej hodnoty načíta index posledného výskytu znaku „.“ používaním String trieda zabudovaná metóda lastIndexOf (char).

Špeciálne prípady:

  1. Žiadne rozšírenie - táto metóda vráti prázdne miesto String
  2. Iba rozšírenie - táto metóda vráti String za bodkou, napr. „Gitignore“

3. Záver

Pri výbere medzi Apache Commons a Guava, zatiaľ čo obe knižnice majú niektoré spoločné znaky a tiež majú funkcie, ktoré v ich alternatíve chýbajú.

To znamená, že ak sa vyžaduje určitá funkčnosť, vyberte tú, ktorá ju má. V opačnom prípade, ak je potrebných viac vlastných scenárov, vyberte ten, ktorý robí maximum z toho, čo potrebujete, a nebojte sa ho zabaliť do svojej vlastnej implementácie, aby ste dosiahli požadovaný výsledok.

Skontrolujte tiež všetky príklady v tomto článku na stránkach Github.