Zwracanie formatu pliku na podstawie nazwy

Zwracanie formatu pliku na podstawie nazwy
AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
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.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

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

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

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

Schakal
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 29
0

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

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
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 ?

Kopiuj
 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;
    }
bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

Użycie lastIndexOf:

Kopiuj
String fullName = "abc.def.egh.mp3";
String extension = fullName.substring(fullName.lastIndexOf(".")+1);
AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

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

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

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

datdata
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 957
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:

Kopiuj
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.

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Dzięki wszystkim za pomoc! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.