So erhalten Sie die Dateierweiterung einer Datei in Java

1. Übersicht

In diesem kurzen Tutorial zeigen wir, wie Sie die Dateierweiterung programmgesteuert in Java erhalten. Wir werden uns auf drei Hauptansätze für das Problem konzentrieren.

In unseren Implementierungen werden die Zeichen nach dem letzten ' .' Wird zurückgegeben.

Wenn unser Dateiname als schnelles Beispiel jarvis.txt lautet , wird der String " txt" als Dateierweiterung zurückgegeben.

2. Abrufen der Dateierweiterung

Für jeden Ansatz lernen wir, wie er implementiert wird, und verfolgen, was in zwei Sonderfällen passiert:

  • Wenn ein Dateiname keine Erweiterungen hat, z. B. eine Makefile- Datei
  • und wenn ein Dateiname nur aus der Erweiterung besteht, z. B. .gitignore oder .DS_Store.

2.1. Einfacher String- Handling-Ansatz

Bei diesem Ansatz verwenden wir einen einfachen String- Handling-Ansatz, um die Erweiterung zu finden:

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

Diese Methode sucht nach dem Punkt '.' Vorkommen im angegebenen Dateinamen.

Wenn es existiert, findet es die letzte Position des Punktes '.' und geben Sie die Zeichen danach zurück, die Zeichen nach dem letzten Punkt '.' bekannt als die Dateierweiterung.

Spezialfälle:

  1. Keine Erweiterung - Diese Methode gibt einen leeren String zurück
  2. Nur Erweiterung - Diese Methode gibt den String nach dem Punkt zurück, z. B. "gitignore".

2.2. DateinameUtils.getExtension von Apache Commons IO

Im zweiten Ansatz finden wir die Erweiterung mithilfe einer Dienstprogrammklasse, die von der Apache Commons IO-Bibliothek bereitgestellt wird:

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

Hier können wir anstelle des Dateinamens auch den vollständigen Pfad zu einer Datei angeben, z. B.C: /baeldung/com/demo.java “.

Die Methode getExtension (String) prüft, ob der angegebene Dateiname leer ist oder nicht.

Wenn der Dateiname leer oder null ist, gibt getExtension (String filename) die angegebene Instanz zurück. Andernfalls wird die Erweiterung des Dateinamens zurückgegeben.

Dazu wird die Methode indexOfExtension (String) verwendet, die wiederum lastIndexof (char) verwendet , um das letzte Vorkommen des '.' Zu ermitteln. Diese Methoden werden beide von FilenameUtils bereitgestellt .

Diese Methode überprüft auch, ob nach dem letzten Punkt kein Verzeichnistrennzeichen vorhanden ist, indem eine andere Methode indexOfLastSeparator (String) verwendet wird, die eine Datei im Unix- oder Windows-Format verarbeitet.

Spezialfälle:

  1. Keine Erweiterung - Diese Methode gibt eine leere Zeichenfolge zurück.
  2. Nur Erweiterung - Diese Methode gibt den String nach dem Punkt zurück, z. B. "gitignore".

2.3. Verwenden der Guavenbibliothek

In diesem letzten Ansatz verwenden wir die Guava-Bibliothek, um die Erweiterung zu finden.

Um eine Guava-Bibliothek hinzuzufügen, können wir unserer pom.xml die folgende Abhängigkeit hinzufügen :

 com.google.guava guava 24.1.1-jre 

Auf die neuesten Abhängigkeiten können wir Maven Central überprüfen.

Nach dem Hinzufügen der Bibliothek können wir einfach die getFileExtension- Methode verwenden:

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

Die Methode getFileExtension (String) prüft zunächst, ob der angegebene Dateiname leer ist.

Wenn der Dateiname nicht leer ist, dann wird es eine erstellen Datei weise durch die gegebene Umwandlung Dateinamen in einen abstrakten Pfadnamen und Aufruf der Datei getName () Methode über sie, die den Namen der Datei , die von diesem abstrakten Pfadnamen bezeichnet werden zurückkehren, oder die leere Zeichenfolge, wenn der angegebene Dateiname leer ist.

Basierend auf diesem Rückgabewert wird der Index des letzten Auftretens des '.' mithilfe der in die String- Klasse eingebauten Methode lastIndexOf (char) .

Spezialfälle:

  1. Keine Erweiterung - Diese Methode gibt einen leeren String zurück
  2. Nur Erweiterung - Diese Methode gibt den String nach dem Punkt zurück, z. B. "gitignore".

3. Fazit

Bei der Auswahl zwischen Apache Commons und Guava haben beide Bibliotheken einige gemeinsame Funktionen und Funktionen, die in ihrer Alternative nicht enthalten sind.

Dies bedeutet, dass Sie, wenn bestimmte Funktionen erforderlich sind, diejenige auswählen, die über diese verfügt. Wenn weitere benutzerdefinierte Szenarien erforderlich sind, wählen Sie dasjenige aus, das das Beste aus Ihren Anforderungen herausholt, und schließen Sie es mit Ihrer eigenen Implementierung ab, um das gewünschte Ergebnis zu erzielen.

Schauen Sie sich auch alle Beispiele in diesem Artikel über Github an.