Hvordan få filtypen til en fil i Java

1. Oversikt

I denne raske opplæringen viser vi hvordan du får tak i filtypen programmatisk i Java. Vi vil fokusere på tre hovedtilnærminger til problemet.

I implementeringene våre har karakterene etter den siste.' vil bli returnert.

Derfor, som et raskt eksempel, hvis filnavnet vårt er jarvis.txt da vil den returnere Stringtekst" som filens forlengelse.

2. Få filtypen

For hver tilnærming lærer vi hvordan vi implementerer det og følger opp hva som skjer i to spesielle tilfeller:

  • når et filnavn ikke har utvidelser, for eksempel en makefile fil
  • og hvis et filnavn bare består av utvidelsen, for eksempel .gitignore eller .DS_Store.

2.1. Enkel String Håndteringsmetode

Med denne tilnærmingen vil vi bruke en enkel String håndteringsmetode for å finne utvidelsen:

offentlig Valgfri getExtensionByStringHandling (strengfilnavn) {retur Optional.ofNullable (filnavn) .filter (f -> f.contains (".")). kart (f -> f.substring (filnavn.lastIndexOf (".") + 1 )); } 

Denne metoden vil se etter prikken ‘. ' forekomst i det gitte filnavnet.

Hvis den eksisterer, vil den finne den siste posisjonen til prikken ‘. ' og returner tegnene etter det, tegnene etter siste prikk ‘. ' kjent som filtypen.

Spesielle tilfeller:

  1. Ingen utvidelse - denne metoden vil returnere en tom String
  2. Bare utvidelse - denne metoden vil returnere String etter prikken, f.eks. “Gitignore”

2.2. FilenameUtils.getExtension fra Apache Commons IO

I den andre tilnærmingen finner vi utvidelsen ved hjelp av en verktøysklasse levert av Apache Commons IO-biblioteket:

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

Her, i stedet for filnavnet, kan vi også spesifisere hele banen til en fil f.eks.C: /baeldung/com/demo.java“.

Metoden getExtension (String) vil sjekke om det gitte filnavn er tom eller ikke.

Hvis filnavn er tom eller null, getExtension (strengfilnavn) vil returnere forekomsten den ble gitt. Ellers returnerer den utvidelsen av filnavnet.

For å gjøre dette bruker den metoden indexOfExtension (streng) som i sin tur bruker lastIndexof (røye) for å finne den siste forekomsten av ‘.’. Disse metodene er begge levert av FilnavnUtils.

Denne metoden sjekker også at det ikke er noen katalogskiller etter den siste prikken ved å bruke en annen metode indexOfLastSeparator (streng), som vil håndtere en fil i enten Unix- eller Windows-format.

Spesielle tilfeller:

  1. Ingen utvidelse - denne metoden returnerer en tom streng.
  2. Bare utvidelse - denne metoden vil returnere String etter prikken, f.eks. “Gitignore”

2.3. Bruke Guava-biblioteket

I denne siste tilnærmingen bruker vi Guava-biblioteket for å finne utvidelsen.

For å legge til et Guava-bibliotek, kan vi legge til følgende avhengighet i vårt pom.xml:

 com.google.guava guava 24.1.1-jre 

For siste avhengighet kan vi sjekke Maven Central.

Etter at biblioteket er lagt til, kan vi bare bruke det getFileExtension metode:

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

Metoden getFileExtension (streng) vil først sjekke om det gitte filnavn er tom.

Hvis den filnavn ikke er tom, så vil den opprette en Fil eksempel ved å konvertere det gitte filnavn inn i et abstrakt stinavn og kall FilensgetName () metode over den, som vil returnere navnet på filen som er angitt med dette abstrakte banenavnet, eller den tomme strengen hvis den er gitt filnavn er tom.

Basert på denne returverdien henter den indeksen for den siste forekomsten av ‘. ' ved bruk av String klasse innebygd metode lastIndexOf (char).

Spesielle tilfeller:

  1. Ingen utvidelse - denne metoden vil returnere en tom String
  2. Bare utvidelse - denne metoden vil returnere String etter prikken, f.eks. “Gitignore”

3. Konklusjon

Når du velger mellom Apache Commons og Guava, mens begge bibliotekene har noen felles funksjoner, og de har også funksjonalitet som er fraværende i deres alternativ.

Dette betyr at hvis en viss funksjonalitet er nødvendig, velger du den som har den. Ellers, hvis flere tilpassede scenarier kreves, velg den som gjør det meste av det du trenger, og pakk den gjerne inn med din egen implementering for å få ønsket resultat.

Sjekk også ut alle eksemplene i denne artikkelen på Github.


$config[zx-auto] not found$config[zx-overlay] not found