5 sent ile giriş yapmak için:
TP, DR
MimetypesFileTypeMap kullanın ve orada olmayan herhangi bir mime ekleyin ve özellikle mime.types dosyasına ihtiyaç duyuyorum.
Ve şimdi, uzun okuma:
Her şeyden önce, MIME türleri listesi çok büyük , buraya bakın: https://www.iana.org/assignments/media-types/media-types.xhtml
Öncelikle JDK tarafından sağlanan standart olanakları kullanmayı seviyorum ve bu işe yaramazsa, gidip başka bir şey arayacağım.
Dosya uzantısından dosya türünü belirleme
1.6'dan beri Java, yukarıdaki cevaplardan birinde işaret edildiği gibi MimetypesFileTypeMap'e sahiptir ve mime türünü belirlemenin en basit yoludur:
new MimetypesFileTypeMap().getContentType( fileName );
Vanilya uygulamasında bu pek bir şey yapmaz (yani .html için çalışır, ancak .png için çalışmaz). Bununla birlikte, ihtiyacınız olabilecek herhangi bir içerik türünü eklemek çok basittir:
- Projenizdeki META-INF klasöründe 'mime.types' adlı bir dosya oluşturun
- İhtiyacınız olan ve varsayılan uygulamanın sağlamadığı her mim türü için bir satır ekleyin (yüzlerce mim türü vardır ve zaman geçtikçe liste büyür).
Png ve js dosyaları için örnek girişler:
image/png png PNG
application/javascript js
Mime.types dosya biçimi için daha fazla ayrıntıya buradan bakın: https://docs.oracle.com/javase/7/docs/api/javax/activation/MimetypesFileTypeMap.html
Dosya içeriğinden dosya türünü belirleme
1.7'den beri Java, bir dosya türünü uygulamaya özel bir şekilde belirlemek için standart bir API tanımlayan java.nio.file.spi.FileTypeDetector'a sahiptir .
Bir dosya için mime türünü getirmek için Dosyalar'ı kullanmanız ve bunu kodunuzda yapmanız yeterlidir :
Files.probeContentType(Paths.get("either file name or full path goes here"));
API tanımı, dosya adından veya dosya içeriğinden (sihirli bayt) dosya mime türünün belirlenmesini destekleyen özellikler sağlar. Bu yüzden probeContentType () , bu API'nin bir uygulamasının, kendisiyle ilişkilendirilmiş dosyayı açmaya çalışmak için kendisine sağlanan durumunda yöntemi IOException özel durumunu oluşturur.
Yine vanilya uygulaması (JDK ile birlikte gelen) arzulanan çok şey bırakıyor.
Uzak, çok uzak bir galaksideki bazı ideal dünyada, bu dosyadan mime tipi sorunu çözmeye çalışan tüm bu kütüphaneler java.nio.file.spi.FileTypeDetector'ı uygular , tercih edilen uygulama kütüphanesinin kavanozuna sınıf yolunuza dosya ve bu olurdu.
TL, DR bölümüne ihtiyacınız olan gerçek dünyada, adının yanında en çok yıldız bulunan kütüphaneyi bulmalı ve kullanmalısınız. Bu özel durum için bir (henüz;)) ihtiyacım yok.