Zwracanie formatu pliku na podstawie nazwy

0

Witam, mam problem, jak poprawnie ustawiać format na podstawie nazwy pliku ? W tym momencie dzieje się to tak że jeżeli wgrany plik brzmi np : Świat seniora.pdf , to metoda zwraca mi poprawnie pdf, ale jeśli tytuł zawiera np mobilny świat seniora to format pliku zwraca mi jako mobi ( taki też mamy ) używam contains.

1

Szukaj ostatniej kropki w pełnej nazwie (metoda lastIndexOf).. Można wiedzieć po co Ci to?

0

Nie lepiej zrobić tak, że z nazwy wyciągasz ciąg który jest po ostatniej kropce?

0

Moja propozycja. Zrobi odpowiedniego RegExa, który na podstawie nazwy zwracałby odpowiedni format za pomocą zwykłego if

0
bogdans napisał(a):

Szukaj ostatniej kropki w pełnej nazwie (metoda lastIndexOf).. Można wiedzieć po co Ci to?

uploaduje plik o rozszerzeniu które mam w Słowniku, potem obok pliku w kolejnej kolumnie wypisuje jego rozszerzenie.

Jak sensownie rozwinąć to metodę o funkcje lastIndexOf ?

 public static SLContentFormat getByFileNameAndItemForm(String fileName, SLItemForm itemForm) {
        String uppFileName = fileName.toUpperCase();
        if (itemForm == SLItemForm.AUDIOBOOK) {
            if (uppFileName.contains("MP3") || uppFileName.contains("ZIP") || uppFileName.contains("AAC")) {
                return MP3;
            }
        } else if (itemForm == SLItemForm.APLIKACJE) {
            if (uppFileName.contains("CSV")) {
                return CSV;
            } else if (uppFileName.contains("EXE") || uppFileName.contains("ZIP")) {
                return EXE;
            }
        } else {
            if (uppFileName.contains("MOBI")) {
                return MOBI;
            } else if (uppFileName.contains("PDF")) {
                return PDF;
            } else if (uppFileName.contains("EPUB")) {
                return EPUB;
            } else if (uppFileName.contains("IPLUS")) {
                return IBUK_PLUS;
            }
        }
        return null;
    }
0

Jeśli lista formatów jest zamknięta (jak w powyższym przykładzie), to zamień

uppFileName.contains("MOBI")
//na
uppFileName.endsWith(".MOBI")

Użycie lastIndexOf:

String fullName = "abc.def.egh.mp3";
String extension = fullName.substring(fullName.lastIndexOf(".")+1);
0

A może ktoś ma pomysł jak po prostu wyciągnąć z tego po prostu extension ?

0

??? Czytałeś mój ostatni post?

1

Jeśli chodzi Ci o extension, jako sufix nazwy pliku czyli to co po kropce, to sparsuj nazwę pliku wyciągając to, co po ostatniej kropce.

Jeśli chcesz dowiedzieć się co to za plik wg standardów IANA to możesz użyć metody:

String type = Files.probeContentType(filename);

Listę typów MIME masz tutaj:
http://www.freeformatter.com/mime-types-list.html

To trochę bardziej bezpieczne i uniwersalne rozwiązanie IMO.

0

Dzięki wszystkim za pomoc! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1