Android: Soll ich MimeTypeMap.getFileExtensionFromUrl () verwenden? [Bugs]

7

Ich wollte zum Beispiel die Dateierweiterung aus der Datei-URL mit der folgenden Funktion abrufen:

Dateiname:

%Vor%

URL der Datei:

%Vor%

Funktionsaufruf:

%Vor%

Aber ich bekomme eine Ausnahme beim Funktionsaufruf. Ist das ein Fehler oder eine Funktion?

Es funktioniert gut für Dateinamen, die nicht so viele fremde Zeichen (wie Paranthesis) enthalten.

Ist die Funktion fehlerhaft? Fehle ich etwas? Wie soll ich einen Fehler von einem Feature unterscheiden? Ich habe die Funktionsbeschreibung gelesen und es sollte richtig funktionieren.

Nutzen Sie es persönlich in Ihren Projekten? Es scheint nicht zuverlässig zu sein.

    
Tool 14.01.2013, 14:40
quelle

3 Antworten

18

Wenn ich Ihren Code teste, wird keine Ausnahme für mich ausgelöst. Obwohl die richtige Dateierweiterung "jpg" nicht zurückgegeben wird. Ich würde nicht empfehlen, MimeTypeMap zu verwenden. Eine einfache Möglichkeit, die Dateierweiterung stattdessen zu erhalten, ist wie folgt:

%Vor%

Warum MimeTypeMap.getFileExtensionFromUrl(url) fehlschlägt? Es erwartet eine korrekt formatierte URL-Zeichenfolge, die Ihre nicht ist. Sie sollten es zuerst mit URLEncoder kodieren. Zum Beispiel:

%Vor%

Dies sollte erlauben, dass MimeTypeMap.getFileExtensionFromUrl(url) ordnungsgemäß funktioniert, aber leider immer noch nicht. Warum? URLEncoder ändert alle Leerzeichen in ein '+' Zeichen und getFileExtensionFromUrl berücksichtigt das ungültige Zeichen. Dieser Teil, IMHO, ist ein Fehler.

Aus meiner Erfahrung verwenden die meisten Leute diese Methode nicht. In der Tat habe ich noch nie davon gehört, bis du diese Frage gestellt hast. Wahrscheinlich, weil das Finden einer Dateierweiterung ziemlich trivial ist und die meisten Leute Code schreiben, der dem ähnlich ist, was ich oben gepostet habe.

    
Jay Soyer 14.01.2013, 15:32
quelle
2
%Vor%     
WCG 29.03.2016 06:19
quelle
0

Ich benutze das in meinem Projekt und es funktioniert, wenn dort bestimmte Zeichen im Dateinamen nicht vorkommen,

Ich habe mich entschieden, den Weg der Spaltung der Saite nicht selbst zu gehen.

Ich habe eine Arbeit für das Problem gemacht:

%Vor%

Und ich habe diese Methode gemacht, um Dateinamen zu bereinigen:

%Vor%

Die Sanitize-Methode ist auch für andere Dinge nützlich.

    
Nicolas Tyler 30.09.2014 08:21
quelle

Tags und Links