568 Stimmen

Wie kann ich die Dateierweiterung einer Datei in Java ermitteln?

Nur um das klarzustellen, ich suche nicht nach dem MIME-Typ.

Nehmen wir an, ich habe die folgende Eingabe: /path/to/file/foo.txt

Ich würde gerne eine Möglichkeit finden, diese Eingabe aufzuteilen, und zwar in .txt für die Verlängerung. Gibt es eine eingebaute Möglichkeit, dies in Java zu tun? Ich möchte vermeiden, meinen eigenen Parser zu schreiben.

10voto

Hier ist ein weiterer Einzeiler für Java 8.

String ext = Arrays.stream(fileName.split("\\.")).reduce((a,b) -> b).orElse(null)

Es funktioniert folgendermaßen:

  1. Aufteilung der Zeichenkette in ein Array von Zeichenketten mit "."
  2. Konvertieren des Arrays in einen Stream
  3. Verwenden Sie reduce, um das letzte Element des Streams zu erhalten, d.h. die Dateierweiterung

10voto

intrepidis Punkte 2745

Wie aus allen anderen Antworten hervorgeht, gibt es keine geeignete "eingebaute" Funktion. Dies ist eine sichere und einfache Methode.

String getFileExtension(File file) {
    if (file == null) {
        return "";
    }
    String name = file.getName();
    int i = name.lastIndexOf('.');
    String ext = i > 0 ? name.substring(i + 1) : "";
    return ext;
}

8voto

Geng Jiawen Punkte 8050

Wenn Sie planen, Apache commons-io zu verwenden, und nur die Dateierweiterung überprüfen und dann eine Operation durchführen wollen, können Sie este Hier ist ein Ausschnitt:

if(FilenameUtils.isExtension(file.getName(),"java")) {
    someoperation();
}

8voto

Ninju Bohra Punkte 460

Wie wäre es (mit Java 1.5 RegEx):

    String[] split = fullFileName.split("\\.");
    String ext = split[split.length - 1];

4voto

eee Punkte 1053

Wie wäre es mit JFileChooser? Das ist nicht ganz einfach, da Sie die endgültige Ausgabe parsen müssen...

JFileChooser filechooser = new JFileChooser();
File file = new File("your.txt");
System.out.println("the extension type:"+filechooser.getTypeDescription(file));

was ein MIME-Typ ist...

OK...ich habe vergessen, dass Sie den MIME-Typ nicht wissen wollen.

Interessanter Code unter dem folgenden Link: http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html

/*
 * Get the extension of a file.
 */  
public static String getExtension(File f) {
    String ext = null;
    String s = f.getName();
    int i = s.lastIndexOf('.');

    if (i > 0 &&  i < s.length() - 1) {
        ext = s.substring(i+1).toLowerCase();
    }
    return ext;
}

Verwandte Frage: Wie schneide ich eine Dateierweiterung aus einem String in Java ab?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X