45 Stimmen

Wie man die Dateierweiterung auf Android überprüft

Wenn wir in meiner Anwendung die Dateien von der SD-Karte durchsuchen, handelt es sich bei den Dateien um .text, .jpg und mpeg4ie-Videodateien.

Ich möchte jeden Dateityp in einem bestimmten Ordner speichern. Textdateien werden zum Beispiel im Textordner gespeichert. Wie prüfe ich die Dateierweiterung, wenn ich die Datei auswähle?

3voto

brendan Punkte 28331

Ich hatte noch keine Gelegenheit, es auszuprobieren (es könnte also sein, dass es nicht 100%ig funktioniert), aber es sollte das sein, wonach Sie suchen:

File files[] = Environment.getExternalStorageDirectory().listFiles();
for (File f : files)
{
    String fullPath = f.getAbsolutePath();
    int dot = fullPath.lastIndexOf(".");
    String ext = fullPath.substring(dot + 1);
    if (ext.equalsIgnoreCase("txt")) // Make sure case is irrelevant
                                     // for your use case; otherwise
                                     // use ext.equals("txt").
    {
        // Do something with f here
    }
}

2voto

Xavi Punkte 19701

Das funktioniert bei mir:

public static String getExtension(String fileName) {
    String encoded;
    try { encoded = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20"); }
    catch(UnsupportedEncodingException e) { encoded = fileName; }
    return MimeTypeMap.getFileExtensionFromUrl(encoded).toLowerCase();
}

Wenn die Datei /mnt/sdcard/boomerang/2013-06-18_12:08:53.txt , "txt" zurückgegeben wird.

Beachten Sie die URLEncoder.encode y .repalce Anrufe sollten alle Zuverlässigkeitsprobleme beheben, die auftreten können, wenn Sie MimeTypeMap.getFileExtensionFromUrl von selbst aufgerufen wird. Ohne die Kodierungs- und Ersetzungsaufrufe würden zum Beispiel Dateinamen wie "Test Image!.jpg" geben leere Zeichenketten zurück. Stellen Sie außerdem sicher, dass der Dateiname klein geschrieben wird. Es MimeTypeMap scheint keine Einträge zu haben für .PNG o .JPG .

2voto

Umesh Punkte 1579

Der kürzeste Weg, eine Dateierweiterung herauszufinden, ist die Verwendung von lastIndexOf('.') vorausgesetzt, der Dateiname enthält eine Erweiterung. Prüfen Sie den folgenden Code:

String fileName = "test.jpg";
int i = fileName.lastIndexOf('.');
String fileExtension = fileName.substring(i+1);
Log.v("FILE EXTENSION: ", fileExtension);

1voto

andrew Punkte 6533

Ich habe ein schönes Beispiel gefunden unter docs.oracle.com wie man die Dateierweiterung erhält, die die Dateityp-Erweiterung in Kleinbuchstaben oder null zurückgibt, wenn es keine Dateierweiterung gibt:

    /*
     * 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;
    }

1voto

Umasankar Punkte 455

Stuff ist .endsWith("Ihre Erweiterung"):

String whatever = you String;

if (whatever.endsWith("jpg")) {
    // Your jpg code
}
else if(whatever.endsWith("png")) {
   // Your png code
}

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