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.
Zwracanie formatu pliku na podstawie nazwy
- Rejestracja: dni
- Ostatnio: dni
Szukaj ostatniej kropki w pełnej nazwie (metoda lastIndexOf).. Można wiedzieć po co Ci to?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 1694
Nie lepiej zrobić tak, że z nazwy wyciągasz ciąg który jest po ostatniej kropce?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 29
Moja propozycja. Zrobi odpowiedniego RegExa, który na podstawie nazwy zwracałby odpowiedni format za pomocą zwykłego if
- Rejestracja: dni
- Ostatnio: dni
- Postów: 143
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;
}
- Rejestracja: dni
- Ostatnio: dni
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);
- Rejestracja: dni
- Ostatnio: dni
- Postów: 143
A może ktoś ma pomysł jak po prostu wyciągnąć z tego po prostu extension ?
- Rejestracja: dni
- Ostatnio: dni
??? Czytałeś mój ostatni post?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 957
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.