2 * jSite2 - MIMETypes.java -
3 * Copyright © 2008 David Roden
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 package net.pterodactylus.util.io;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.List;
29 * Handles MIME types and maps them to file extensions.
31 * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
33 public class MimeTypes {
35 /** List of all MIME types. */
36 private static final List<String> mimeTypes = new ArrayList<String>();
38 /** Maps from MIME types to registered extensions. */
39 private static final Map<String, List<String>> mimeTypeExtensions = new HashMap<String, List<String>>();
41 /** Maps from extensions to registered MIME types. */
42 private static final Map<String, List<String>> extensionMimeTypes = new HashMap<String, List<String>>();
44 /* MIME type list generated from my /etc/mime.types. */
46 addMimeType("application/activemessage");
47 addMimeType("application/andrew-inset", "ez");
48 addMimeType("application/applefile");
49 addMimeType("application/atomicmail");
50 addMimeType("application/batch-SMTP");
51 addMimeType("application/beep+xml");
52 addMimeType("application/cals-1840");
53 addMimeType("application/commonground");
54 addMimeType("application/cu-seeme", "cu");
55 addMimeType("application/cybercash");
56 addMimeType("application/dca-rft");
57 addMimeType("application/dec-dx");
58 addMimeType("application/docbook+xml");
59 addMimeType("application/dsptype", "tsp");
60 addMimeType("application/dvcs");
61 addMimeType("application/edi-consent");
62 addMimeType("application/edi-x12");
63 addMimeType("application/edifact");
64 addMimeType("application/eshop");
65 addMimeType("application/font-tdpfr");
66 addMimeType("application/futuresplash", "spl");
67 addMimeType("application/ghostview");
68 addMimeType("application/hta", "hta");
69 addMimeType("application/http");
70 addMimeType("application/hyperstudio");
71 addMimeType("application/iges");
72 addMimeType("application/index");
73 addMimeType("application/index.cmd");
74 addMimeType("application/index.obj");
75 addMimeType("application/index.response");
76 addMimeType("application/index.vnd");
77 addMimeType("application/iotp");
78 addMimeType("application/ipp");
79 addMimeType("application/isup");
80 addMimeType("application/java-archive", "jar");
81 addMimeType("application/java-serialized-object", "ser");
82 addMimeType("application/java-vm", "class");
83 addMimeType("application/mac-binhex40", "hqx");
84 addMimeType("application/mac-compactpro", "cpt");
85 addMimeType("application/macwriteii");
86 addMimeType("application/marc");
87 addMimeType("application/mathematica", "nb");
88 addMimeType("application/mathematica-old");
89 addMimeType("application/msaccess", "mdb");
90 addMimeType("application/msword", "doc", "dot");
91 addMimeType("application/news-message-id");
92 addMimeType("application/news-transmission");
93 addMimeType("application/ocsp-request");
94 addMimeType("application/ocsp-response");
95 addMimeType("application/octet-stream", "bin");
96 addMimeType("application/oda", "oda");
97 addMimeType("application/ogg", "ogg");
98 addMimeType("application/parityfec");
99 addMimeType("application/pdf", "pdf");
100 addMimeType("application/pgp-encrypted");
101 addMimeType("application/pgp-keys", "key");
102 addMimeType("application/pgp-signature", "pgp");
103 addMimeType("application/pics-rules", "prf");
104 addMimeType("application/pkcs10");
105 addMimeType("application/pkcs7-mime");
106 addMimeType("application/pkcs7-signature");
107 addMimeType("application/pkix-cert");
108 addMimeType("application/pkix-crl");
109 addMimeType("application/pkixcmp");
110 addMimeType("application/postscript", "ps", "ai", "eps");
111 addMimeType("application/prs.alvestrand.titrax-sheet");
112 addMimeType("application/prs.cww");
113 addMimeType("application/prs.nprend");
114 addMimeType("application/qsig");
115 addMimeType("application/rar", "rar");
116 addMimeType("application/rdf+xml", "rdf");
117 addMimeType("application/remote-printing");
118 addMimeType("application/riscos");
119 addMimeType("application/rss+xml", "rss");
120 addMimeType("application/rtf");
121 addMimeType("application/sdp");
122 addMimeType("application/set-payment");
123 addMimeType("application/set-payment-initiation");
124 addMimeType("application/set-registration");
125 addMimeType("application/set-registration-initiation");
126 addMimeType("application/sgml");
127 addMimeType("application/sgml-open-catalog");
128 addMimeType("application/sieve");
129 addMimeType("application/slate");
130 addMimeType("application/smil", "smi", "smil");
131 addMimeType("application/timestamp-query");
132 addMimeType("application/timestamp-reply");
133 addMimeType("application/vemmi");
134 addMimeType("application/whoispp-query");
135 addMimeType("application/whoispp-response");
136 addMimeType("application/wita");
137 addMimeType("application/wordperfect", "wpd");
138 addMimeType("application/wordperfect5.1", "wp5");
139 addMimeType("application/x400-bp");
140 addMimeType("application/xhtml+xml", "xhtml", "xht");
141 addMimeType("application/xml", "xml", "xsl");
142 addMimeType("application/xml-dtd");
143 addMimeType("application/xml-external-parsed-entity");
144 addMimeType("application/zip", "zip");
145 addMimeType("application/vnd.3M.Post-it-Notes");
146 addMimeType("application/vnd.accpac.simply.aso");
147 addMimeType("application/vnd.accpac.simply.imp");
148 addMimeType("application/vnd.acucobol");
149 addMimeType("application/vnd.aether.imp");
150 addMimeType("application/vnd.anser-web-certificate-issue-initiation");
151 addMimeType("application/vnd.anser-web-funds-transfer-initiation");
152 addMimeType("application/vnd.audiograph");
153 addMimeType("application/vnd.bmi");
154 addMimeType("application/vnd.businessobjects");
155 addMimeType("application/vnd.canon-cpdl");
156 addMimeType("application/vnd.canon-lips");
157 addMimeType("application/vnd.cinderella", "cdy");
158 addMimeType("application/vnd.claymore");
159 addMimeType("application/vnd.commerce-battelle");
160 addMimeType("application/vnd.commonspace");
161 addMimeType("application/vnd.comsocaller");
162 addMimeType("application/vnd.contact.cmsg");
163 addMimeType("application/vnd.cosmocaller");
164 addMimeType("application/vnd.ctc-posml");
165 addMimeType("application/vnd.cups-postscript");
166 addMimeType("application/vnd.cups-raster");
167 addMimeType("application/vnd.cups-raw");
168 addMimeType("application/vnd.cybank");
169 addMimeType("application/vnd.dna");
170 addMimeType("application/vnd.dpgraph");
171 addMimeType("application/vnd.dxr");
172 addMimeType("application/vnd.ecdis-update");
173 addMimeType("application/vnd.ecowin.chart");
174 addMimeType("application/vnd.ecowin.filerequest");
175 addMimeType("application/vnd.ecowin.fileupdate");
176 addMimeType("application/vnd.ecowin.series");
177 addMimeType("application/vnd.ecowin.seriesrequest");
178 addMimeType("application/vnd.ecowin.seriesupdate");
179 addMimeType("application/vnd.enliven");
180 addMimeType("application/vnd.epson.esf");
181 addMimeType("application/vnd.epson.msf");
182 addMimeType("application/vnd.epson.quickanime");
183 addMimeType("application/vnd.epson.salt");
184 addMimeType("application/vnd.epson.ssf");
185 addMimeType("application/vnd.ericsson.quickcall");
186 addMimeType("application/vnd.eudora.data");
187 addMimeType("application/vnd.fdf");
188 addMimeType("application/vnd.ffsns");
189 addMimeType("application/vnd.flographit");
190 addMimeType("application/vnd.framemaker");
191 addMimeType("application/vnd.fsc.weblaunch");
192 addMimeType("application/vnd.fujitsu.oasys");
193 addMimeType("application/vnd.fujitsu.oasys2");
194 addMimeType("application/vnd.fujitsu.oasys3");
195 addMimeType("application/vnd.fujitsu.oasysgp");
196 addMimeType("application/vnd.fujitsu.oasysprs");
197 addMimeType("application/vnd.fujixerox.ddd");
198 addMimeType("application/vnd.fujixerox.docuworks");
199 addMimeType("application/vnd.fujixerox.docuworks.binder");
200 addMimeType("application/vnd.fut-misnet");
201 addMimeType("application/vnd.grafeq");
202 addMimeType("application/vnd.groove-account");
203 addMimeType("application/vnd.groove-identity-message");
204 addMimeType("application/vnd.groove-injector");
205 addMimeType("application/vnd.groove-tool-message");
206 addMimeType("application/vnd.groove-tool-template");
207 addMimeType("application/vnd.groove-vcard");
208 addMimeType("application/vnd.hhe.lesson-player");
209 addMimeType("application/vnd.hp-HPGL");
210 addMimeType("application/vnd.hp-PCL");
211 addMimeType("application/vnd.hp-PCLXL");
212 addMimeType("application/vnd.hp-hpid");
213 addMimeType("application/vnd.hp-hps");
214 addMimeType("application/vnd.httphone");
215 addMimeType("application/vnd.hzn-3d-crossword");
216 addMimeType("application/vnd.ibm.MiniPay");
217 addMimeType("application/vnd.ibm.afplinedata");
218 addMimeType("application/vnd.ibm.modcap");
219 addMimeType("application/vnd.informix-visionary");
220 addMimeType("application/vnd.intercon.formnet");
221 addMimeType("application/vnd.intertrust.digibox");
222 addMimeType("application/vnd.intertrust.nncp");
223 addMimeType("application/vnd.intu.qbo");
224 addMimeType("application/vnd.intu.qfx");
225 addMimeType("application/vnd.irepository.package+xml");
226 addMimeType("application/vnd.is-xpr");
227 addMimeType("application/vnd.japannet-directory-service");
228 addMimeType("application/vnd.japannet-jpnstore-wakeup");
229 addMimeType("application/vnd.japannet-payment-wakeup");
230 addMimeType("application/vnd.japannet-registration");
231 addMimeType("application/vnd.japannet-registration-wakeup");
232 addMimeType("application/vnd.japannet-setstore-wakeup");
233 addMimeType("application/vnd.japannet-verification");
234 addMimeType("application/vnd.japannet-verification-wakeup");
235 addMimeType("application/vnd.koan");
236 addMimeType("application/vnd.lotus-1-2-3");
237 addMimeType("application/vnd.lotus-approach");
238 addMimeType("application/vnd.lotus-freelance");
239 addMimeType("application/vnd.lotus-notes");
240 addMimeType("application/vnd.lotus-organizer");
241 addMimeType("application/vnd.lotus-screencam");
242 addMimeType("application/vnd.lotus-wordpro");
243 addMimeType("application/vnd.mcd");
244 addMimeType("application/vnd.mediastation.cdkey");
245 addMimeType("application/vnd.meridian-slingshot");
246 addMimeType("application/vnd.mif");
247 addMimeType("application/vnd.minisoft-hp3000-save");
248 addMimeType("application/vnd.mitsubishi.misty-guard.trustweb");
249 addMimeType("application/vnd.mobius.daf");
250 addMimeType("application/vnd.mobius.dis");
251 addMimeType("application/vnd.mobius.msl");
252 addMimeType("application/vnd.mobius.plc");
253 addMimeType("application/vnd.mobius.txf");
254 addMimeType("application/vnd.motorola.flexsuite");
255 addMimeType("application/vnd.motorola.flexsuite.adsi");
256 addMimeType("application/vnd.motorola.flexsuite.fis");
257 addMimeType("application/vnd.motorola.flexsuite.gotap");
258 addMimeType("application/vnd.motorola.flexsuite.kmr");
259 addMimeType("application/vnd.motorola.flexsuite.ttc");
260 addMimeType("application/vnd.motorola.flexsuite.wem");
261 addMimeType("application/vnd.mozilla.xul+xml", "xul");
262 addMimeType("application/vnd.ms-artgalry");
263 addMimeType("application/vnd.ms-asf");
264 addMimeType("application/vnd.ms-excel", "xls", "xlb", "xlt");
265 addMimeType("application/vnd.ms-lrm");
266 addMimeType("application/vnd.ms-pki.seccat", "cat");
267 addMimeType("application/vnd.ms-pki.stl", "stl");
268 addMimeType("application/vnd.ms-powerpoint", "ppt", "pps");
269 addMimeType("application/vnd.ms-project");
270 addMimeType("application/vnd.ms-tnef");
271 addMimeType("application/vnd.ms-works");
272 addMimeType("application/vnd.mseq");
273 addMimeType("application/vnd.msign");
274 addMimeType("application/vnd.music-niff");
275 addMimeType("application/vnd.musician");
276 addMimeType("application/vnd.netfpx");
277 addMimeType("application/vnd.noblenet-directory");
278 addMimeType("application/vnd.noblenet-sealer");
279 addMimeType("application/vnd.noblenet-web");
280 addMimeType("application/vnd.novadigm.EDM");
281 addMimeType("application/vnd.novadigm.EDX");
282 addMimeType("application/vnd.novadigm.EXT");
283 addMimeType("application/vnd.oasis.opendocument.chart", "odc");
284 addMimeType("application/vnd.oasis.opendocument.database", "odb");
285 addMimeType("application/vnd.oasis.opendocument.formula", "odf");
286 addMimeType("application/vnd.oasis.opendocument.graphics", "odg");
287 addMimeType("application/vnd.oasis.opendocument.graphics-template", "otg");
288 addMimeType("application/vnd.oasis.opendocument.image", "odi");
289 addMimeType("application/vnd.oasis.opendocument.presentation", "odp");
290 addMimeType("application/vnd.oasis.opendocument.presentation-template", "otp");
291 addMimeType("application/vnd.oasis.opendocument.spreadsheet", "ods");
292 addMimeType("application/vnd.oasis.opendocument.spreadsheet-template", "ots");
293 addMimeType("application/vnd.oasis.opendocument.text", "odt");
294 addMimeType("application/vnd.oasis.opendocument.text-master", "odm");
295 addMimeType("application/vnd.oasis.opendocument.text-template", "ott");
296 addMimeType("application/vnd.oasis.opendocument.text-web", "oth");
297 addMimeType("application/vnd.osa.netdeploy");
298 addMimeType("application/vnd.palm");
299 addMimeType("application/vnd.pg.format");
300 addMimeType("application/vnd.pg.osasli");
301 addMimeType("application/vnd.powerbuilder6");
302 addMimeType("application/vnd.powerbuilder6-s");
303 addMimeType("application/vnd.powerbuilder7");
304 addMimeType("application/vnd.powerbuilder7-s");
305 addMimeType("application/vnd.powerbuilder75");
306 addMimeType("application/vnd.powerbuilder75-s");
307 addMimeType("application/vnd.previewsystems.box");
308 addMimeType("application/vnd.publishare-delta-tree");
309 addMimeType("application/vnd.pvi.ptid1");
310 addMimeType("application/vnd.pwg-xhtml-print+xml");
311 addMimeType("application/vnd.rapid");
312 addMimeType("application/vnd.rim.cod", "cod");
313 addMimeType("application/vnd.s3sms");
314 addMimeType("application/vnd.seemail");
315 addMimeType("application/vnd.shana.informed.formdata");
316 addMimeType("application/vnd.shana.informed.formtemplate");
317 addMimeType("application/vnd.shana.informed.interchange");
318 addMimeType("application/vnd.shana.informed.package");
319 addMimeType("application/vnd.smaf", "mmf");
320 addMimeType("application/vnd.sss-cod");
321 addMimeType("application/vnd.sss-dtf");
322 addMimeType("application/vnd.sss-ntf");
323 addMimeType("application/vnd.stardivision.calc", "sdc");
324 addMimeType("application/vnd.stardivision.draw", "sda");
325 addMimeType("application/vnd.stardivision.impress", "sdd", "sdp");
326 addMimeType("application/vnd.stardivision.math", "smf");
327 addMimeType("application/vnd.stardivision.writer", "sdw", "vor");
328 addMimeType("application/vnd.stardivision.writer-global", "sgl");
329 addMimeType("application/vnd.street-stream");
330 addMimeType("application/vnd.sun.xml.calc", "sxc");
331 addMimeType("application/vnd.sun.xml.calc.template", "stc");
332 addMimeType("application/vnd.sun.xml.draw", "sxd");
333 addMimeType("application/vnd.sun.xml.draw.template", "std");
334 addMimeType("application/vnd.sun.xml.impress", "sxi");
335 addMimeType("application/vnd.sun.xml.impress.template", "sti");
336 addMimeType("application/vnd.sun.xml.math", "sxm");
337 addMimeType("application/vnd.sun.xml.writer", "sxw");
338 addMimeType("application/vnd.sun.xml.writer.global", "sxg");
339 addMimeType("application/vnd.sun.xml.writer.template", "stw");
340 addMimeType("application/vnd.svd");
341 addMimeType("application/vnd.swiftview-ics");
342 addMimeType("application/vnd.symbian.install", "sis");
343 addMimeType("application/vnd.triscape.mxs");
344 addMimeType("application/vnd.trueapp");
345 addMimeType("application/vnd.truedoc");
346 addMimeType("application/vnd.tve-trigger");
347 addMimeType("application/vnd.ufdl");
348 addMimeType("application/vnd.uplanet.alert");
349 addMimeType("application/vnd.uplanet.alert-wbxml");
350 addMimeType("application/vnd.uplanet.bearer-choice");
351 addMimeType("application/vnd.uplanet.bearer-choice-wbxml");
352 addMimeType("application/vnd.uplanet.cacheop");
353 addMimeType("application/vnd.uplanet.cacheop-wbxml");
354 addMimeType("application/vnd.uplanet.channel");
355 addMimeType("application/vnd.uplanet.channel-wbxml");
356 addMimeType("application/vnd.uplanet.list");
357 addMimeType("application/vnd.uplanet.list-wbxml");
358 addMimeType("application/vnd.uplanet.listcmd");
359 addMimeType("application/vnd.uplanet.listcmd-wbxml");
360 addMimeType("application/vnd.uplanet.signal");
361 addMimeType("application/vnd.vcx");
362 addMimeType("application/vnd.vectorworks");
363 addMimeType("application/vnd.vidsoft.vidconference");
364 addMimeType("application/vnd.visio", "vsd");
365 addMimeType("application/vnd.vividence.scriptfile");
366 addMimeType("application/vnd.wap.sic");
367 addMimeType("application/vnd.wap.slc");
368 addMimeType("application/vnd.wap.wbxml", "wbxml");
369 addMimeType("application/vnd.wap.wmlc", "wmlc");
370 addMimeType("application/vnd.wap.wmlscriptc", "wmlsc");
371 addMimeType("application/vnd.webturbo");
372 addMimeType("application/vnd.wrq-hp3000-labelled");
373 addMimeType("application/vnd.wt.stf");
374 addMimeType("application/vnd.xara");
375 addMimeType("application/vnd.xfdl");
376 addMimeType("application/vnd.yellowriver-custom-menu");
377 addMimeType("application/x-123", "wk");
378 addMimeType("application/x-abiword", "abw");
379 addMimeType("application/x-apple-diskimage", "dmg");
380 addMimeType("application/x-bcpio", "bcpio");
381 addMimeType("application/x-bittorrent", "torrent");
382 addMimeType("application/x-cdf", "cdf");
383 addMimeType("application/x-cdlink", "vcd");
384 addMimeType("application/x-chess-pgn", "pgn");
385 addMimeType("application/x-core");
386 addMimeType("application/x-cpio", "cpio");
387 addMimeType("application/x-csh", "csh");
388 addMimeType("application/x-debian-package", "deb", "udeb");
389 addMimeType("application/x-director", "dcr", "dir", "dxr");
390 addMimeType("application/x-dms", "dms");
391 addMimeType("application/x-doom", "wad");
392 addMimeType("application/x-dvi", "dvi");
393 addMimeType("application/x-executable");
394 addMimeType("application/x-flac", "flac");
395 addMimeType("application/x-font", "pfa", "pfb", "gsf", "pcf", "pcf.Z");
396 addMimeType("application/x-freemind", "mm");
397 addMimeType("application/x-futuresplash", "spl");
398 addMimeType("application/x-gnumeric", "gnumeric");
399 addMimeType("application/x-go-sgf", "sgf");
400 addMimeType("application/x-graphing-calculator", "gcf");
401 addMimeType("application/x-gtar", "gtar", "tgz", "taz");
402 addMimeType("application/x-hdf", "hdf");
403 addMimeType("application/x-ica", "ica");
404 addMimeType("application/x-internet-signup", "ins", "isp");
405 addMimeType("application/x-iphone", "iii");
406 addMimeType("application/x-iso9660-image", "iso");
407 addMimeType("application/x-java-applet");
408 addMimeType("application/x-java-bean");
409 addMimeType("application/x-java-jnlp-file", "jnlp");
410 addMimeType("application/x-javascript", "js");
411 addMimeType("application/x-jmol", "jmz");
412 addMimeType("application/x-kchart", "chrt");
413 addMimeType("application/x-kdelnk");
414 addMimeType("application/x-killustrator", "kil");
415 addMimeType("application/x-koan", "skp", "skd", "skt", "skm");
416 addMimeType("application/x-kpresenter", "kpr", "kpt");
417 addMimeType("application/x-kspread", "ksp");
418 addMimeType("application/x-kword", "kwd", "kwt");
419 addMimeType("application/x-latex", "latex");
420 addMimeType("application/x-lha", "lha");
421 addMimeType("application/x-lzh", "lzh");
422 addMimeType("application/x-lzx", "lzx");
423 addMimeType("application/x-maker", "frm", "maker", "frame", "fm", "fb", "book", "fbdoc");
424 addMimeType("application/x-mif", "mif");
425 addMimeType("application/x-ms-wmd", "wmd");
426 addMimeType("application/x-ms-wmz", "wmz");
427 addMimeType("application/x-msdos-program", "com", "exe", "bat", "dll");
428 addMimeType("application/x-msi", "msi");
429 addMimeType("application/x-netcdf", "nc");
430 addMimeType("application/x-ns-proxy-autoconfig", "pac");
431 addMimeType("application/x-nwc", "nwc");
432 addMimeType("application/x-object", "o");
433 addMimeType("application/x-oz-application", "oza");
434 addMimeType("application/x-pkcs7-certreqresp", "p7r");
435 addMimeType("application/x-pkcs7-crl", "crl");
436 addMimeType("application/x-python-code", "pyc", "pyo");
437 addMimeType("application/x-quicktimeplayer", "qtl");
438 addMimeType("application/x-redhat-package-manager", "rpm");
439 addMimeType("application/x-rx");
440 addMimeType("application/x-sh", "sh");
441 addMimeType("application/x-shar", "shar");
442 addMimeType("application/x-shellscript");
443 addMimeType("application/x-shockwave-flash", "swf", "swfl");
444 addMimeType("application/x-stuffit", "sit");
445 addMimeType("application/x-sv4cpio", "sv4cpio");
446 addMimeType("application/x-sv4crc", "sv4crc");
447 addMimeType("application/x-tar", "tar");
448 addMimeType("application/x-tcl", "tcl");
449 addMimeType("application/x-tex-gf", "gf");
450 addMimeType("application/x-tex-pk", "pk");
451 addMimeType("application/x-texinfo", "texinfo", "texi");
452 addMimeType("application/x-trash", "~", "%", "bak", "old", "sik");
453 addMimeType("application/x-troff", "t", "tr", "roff");
454 addMimeType("application/x-troff-man", "man");
455 addMimeType("application/x-troff-me", "me");
456 addMimeType("application/x-troff-ms", "ms");
457 addMimeType("application/x-ustar", "ustar");
458 addMimeType("application/x-videolan");
459 addMimeType("application/x-wais-source", "src");
460 addMimeType("application/x-wingz", "wz");
461 addMimeType("application/x-x509-ca-cert", "crt");
462 addMimeType("application/x-xcf", "xcf");
463 addMimeType("application/x-xfig", "fig");
464 addMimeType("application/x-xpinstall", "xpi");
465 addMimeType("audio/32kadpcm");
466 addMimeType("audio/basic", "au", "snd");
467 addMimeType("audio/dvi4");
468 addMimeType("audio/g.722.1");
469 addMimeType("audio/g722");
470 addMimeType("audio/g723");
471 addMimeType("audio/g726-16");
472 addMimeType("audio/g726-24");
473 addMimeType("audio/g726-32");
474 addMimeType("audio/g726-40");
475 addMimeType("audio/g728");
476 addMimeType("audio/g729");
477 addMimeType("audio/g729d");
478 addMimeType("audio/g729e");
479 addMimeType("audio/gsm");
480 addMimeType("audio/gsm-efr");
481 addMimeType("audio/l8");
482 addMimeType("audio/l16");
483 addMimeType("audio/lpc");
484 addMimeType("audio/midi", "mid", "midi", "kar");
485 addMimeType("audio/mp4a-latm");
486 addMimeType("audio/mpa");
487 addMimeType("audio/mpa-robust");
488 addMimeType("audio/mpeg", "mpga", "mpega", "mp2", "mp3", "m4a");
489 addMimeType("audio/mpegurl", "m3u");
490 addMimeType("audio/parityfec");
491 addMimeType("audio/pcma");
492 addMimeType("audio/pcmu");
493 addMimeType("audio/prs.sid", "sid");
494 addMimeType("audio/qcelp");
495 addMimeType("audio/red");
496 addMimeType("audio/telephone-event");
497 addMimeType("audio/tone");
498 addMimeType("audio/vdvi");
499 addMimeType("audio/vnd.cisco.nse");
500 addMimeType("audio/vnd.cns.anp1");
501 addMimeType("audio/vnd.cns.inf1");
502 addMimeType("audio/vnd.digital-winds");
503 addMimeType("audio/vnd.everad.plj");
504 addMimeType("audio/vnd.lucent.voice");
505 addMimeType("audio/vnd.nortel.vbk");
506 addMimeType("audio/vnd.nuera.ecelp4800");
507 addMimeType("audio/vnd.nuera.ecelp7470");
508 addMimeType("audio/vnd.nuera.ecelp9600");
509 addMimeType("audio/vnd.octel.sbc");
510 addMimeType("audio/vnd.qcelp");
511 addMimeType("audio/vnd.rhetorex.32kadpcm");
512 addMimeType("audio/vnd.vmx.cvsd");
513 addMimeType("audio/x-aiff", "aif", "aiff", "aifc");
514 addMimeType("audio/x-gsm", "gsm");
515 addMimeType("audio/x-mpegurl", "m3u");
516 addMimeType("audio/x-ms-wma", "wma");
517 addMimeType("audio/x-ms-wax", "wax");
518 addMimeType("audio/x-pn-realaudio-plugin");
519 addMimeType("audio/x-pn-realaudio", "ra", "rm", "ram");
520 addMimeType("audio/x-realaudio", "ra");
521 addMimeType("audio/x-scpls", "pls");
522 addMimeType("audio/x-sd2", "sd2");
523 addMimeType("audio/x-wav", "wav");
524 addMimeType("chemical/x-alchemy", "alc");
525 addMimeType("chemical/x-cache", "cac", "cache");
526 addMimeType("chemical/x-cache-csf", "csf");
527 addMimeType("chemical/x-cactvs-binary", "cbin", "cascii", "ctab");
528 addMimeType("chemical/x-cdx", "cdx");
529 addMimeType("chemical/x-cerius", "cer");
530 addMimeType("chemical/x-chem3d", "c3d");
531 addMimeType("chemical/x-chemdraw", "chm");
532 addMimeType("chemical/x-cif", "cif");
533 addMimeType("chemical/x-cmdf", "cmdf");
534 addMimeType("chemical/x-cml", "cml");
535 addMimeType("chemical/x-compass", "cpa");
536 addMimeType("chemical/x-crossfire", "bsd");
537 addMimeType("chemical/x-csml", "csml", "csm");
538 addMimeType("chemical/x-ctx", "ctx");
539 addMimeType("chemical/x-cxf", "cxf", "cef");
540 addMimeType("chemical/x-embl-dl-nucleotide", "emb", "embl");
541 addMimeType("chemical/x-galactic-spc", "spc");
542 addMimeType("chemical/x-gamess-input", "inp", "gam", "gamin");
543 addMimeType("chemical/x-gaussian-checkpoint", "fch", "fchk");
544 addMimeType("chemical/x-gaussian-cube", "cub");
545 addMimeType("chemical/x-gaussian-input", "gau", "gjc", "gjf");
546 addMimeType("chemical/x-gaussian-log", "gal");
547 addMimeType("chemical/x-gcg8-sequence", "gcg");
548 addMimeType("chemical/x-genbank", "gen");
549 addMimeType("chemical/x-hin", "hin");
550 addMimeType("chemical/x-isostar", "istr", "ist");
551 addMimeType("chemical/x-jcamp-dx", "jdx", "dx");
552 addMimeType("chemical/x-kinemage", "kin");
553 addMimeType("chemical/x-macmolecule", "mcm");
554 addMimeType("chemical/x-macromodel-input", "mmd", "mmod");
555 addMimeType("chemical/x-mdl-molfile", "mol");
556 addMimeType("chemical/x-mdl-rdfile", "rd");
557 addMimeType("chemical/x-mdl-rxnfile", "rxn");
558 addMimeType("chemical/x-mdl-sdfile", "sd", "sdf");
559 addMimeType("chemical/x-mdl-tgf", "tgf");
560 addMimeType("chemical/x-mmcif", "mcif");
561 addMimeType("chemical/x-mol2", "mol2");
562 addMimeType("chemical/x-molconn-Z", "b");
563 addMimeType("chemical/x-mopac-graph", "gpt");
564 addMimeType("chemical/x-mopac-input", "mop", "mopcrt", "mpc", "dat", "zmt");
565 addMimeType("chemical/x-mopac-out", "moo");
566 addMimeType("chemical/x-mopac-vib", "mvb");
567 addMimeType("chemical/x-ncbi-asn1", "asn");
568 addMimeType("chemical/x-ncbi-asn1-ascii", "prt", "ent");
569 addMimeType("chemical/x-ncbi-asn1-binary", "val", "aso");
570 addMimeType("chemical/x-ncbi-asn1-spec", "asn");
571 addMimeType("chemical/x-pdb", "pdb", "ent");
572 addMimeType("chemical/x-rosdal", "ros");
573 addMimeType("chemical/x-swissprot", "sw");
574 addMimeType("chemical/x-vamas-iso14976", "vms");
575 addMimeType("chemical/x-vmd", "vmd");
576 addMimeType("chemical/x-xtel", "xtel");
577 addMimeType("chemical/x-xyz", "xyz");
578 addMimeType("image/cgm");
579 addMimeType("image/g3fax");
580 addMimeType("image/gif", "gif");
581 addMimeType("image/ief", "ief");
582 addMimeType("image/jpeg", "jpeg", "jpg", "jpe");
583 addMimeType("image/naplps");
584 addMimeType("image/pcx", "pcx");
585 addMimeType("image/png", "png");
586 addMimeType("image/prs.btif");
587 addMimeType("image/prs.pti");
588 addMimeType("image/svg+xml", "svg", "svgz");
589 addMimeType("image/tiff", "tiff", "tif");
590 addMimeType("image/vnd.cns.inf2");
591 addMimeType("image/vnd.djvu", "djvu", "djv");
592 addMimeType("image/vnd.dwg");
593 addMimeType("image/vnd.dxf");
594 addMimeType("image/vnd.fastbidsheet");
595 addMimeType("image/vnd.fpx");
596 addMimeType("image/vnd.fst");
597 addMimeType("image/vnd.fujixerox.edmics-mmr");
598 addMimeType("image/vnd.fujixerox.edmics-rlc");
599 addMimeType("image/vnd.mix");
600 addMimeType("image/vnd.net-fpx");
601 addMimeType("image/vnd.svf");
602 addMimeType("image/vnd.wap.wbmp", "wbmp");
603 addMimeType("image/vnd.xiff");
604 addMimeType("image/x-cmu-raster", "ras");
605 addMimeType("image/x-coreldraw", "cdr");
606 addMimeType("image/x-coreldrawpattern", "pat");
607 addMimeType("image/x-coreldrawtemplate", "cdt");
608 addMimeType("image/x-corelphotopaint", "cpt");
609 addMimeType("image/x-icon", "ico");
610 addMimeType("image/x-jg", "art");
611 addMimeType("image/x-jng", "jng");
612 addMimeType("image/x-ms-bmp", "bmp");
613 addMimeType("image/x-photoshop", "psd");
614 addMimeType("image/x-portable-anymap", "pnm");
615 addMimeType("image/x-portable-bitmap", "pbm");
616 addMimeType("image/x-portable-graymap", "pgm");
617 addMimeType("image/x-portable-pixmap", "ppm");
618 addMimeType("image/x-rgb", "rgb");
619 addMimeType("image/x-xbitmap", "xbm");
620 addMimeType("image/x-xpixmap", "xpm");
621 addMimeType("image/x-xwindowdump", "xwd");
622 addMimeType("inode/chardevice");
623 addMimeType("inode/blockdevice");
624 addMimeType("inode/directory-locked");
625 addMimeType("inode/directory");
626 addMimeType("inode/fifo");
627 addMimeType("inode/socket");
628 addMimeType("message/delivery-status");
629 addMimeType("message/disposition-notification");
630 addMimeType("message/external-body");
631 addMimeType("message/http");
632 addMimeType("message/s-http");
633 addMimeType("message/news");
634 addMimeType("message/partial");
635 addMimeType("message/rfc822");
636 addMimeType("model/iges", "igs", "iges");
637 addMimeType("model/mesh", "msh", "mesh", "silo");
638 addMimeType("model/vnd.dwf");
639 addMimeType("model/vnd.flatland.3dml");
640 addMimeType("model/vnd.gdl");
641 addMimeType("model/vnd.gs-gdl");
642 addMimeType("model/vnd.gtw");
643 addMimeType("model/vnd.mts");
644 addMimeType("model/vnd.vtu");
645 addMimeType("model/vrml", "wrl", "vrml");
646 addMimeType("multipart/alternative");
647 addMimeType("multipart/appledouble");
648 addMimeType("multipart/byteranges");
649 addMimeType("multipart/digest");
650 addMimeType("multipart/encrypted");
651 addMimeType("multipart/form-data");
652 addMimeType("multipart/header-set");
653 addMimeType("multipart/mixed");
654 addMimeType("multipart/parallel");
655 addMimeType("multipart/related");
656 addMimeType("multipart/report");
657 addMimeType("multipart/signed");
658 addMimeType("multipart/voice-message");
659 addMimeType("text/calendar", "ics", "icz");
660 addMimeType("text/comma-separated-values", "csv");
661 addMimeType("text/css", "css");
662 addMimeType("text/directory");
663 addMimeType("text/english");
664 addMimeType("text/enriched");
665 addMimeType("text/h323", "323");
666 addMimeType("text/html", "html", "htm", "shtml");
667 addMimeType("text/iuls", "uls");
668 addMimeType("text/mathml", "mml");
669 addMimeType("text/parityfec");
670 addMimeType("text/plain", "asc", "txt", "text", "diff", "pot");
671 addMimeType("text/prs.lines.tag");
672 addMimeType("text/x-psp", "psp");
673 addMimeType("text/rfc822-headers");
674 addMimeType("text/richtext", "rtx");
675 addMimeType("text/rtf", "rtf");
676 addMimeType("text/scriptlet", "sct", "wsc");
677 addMimeType("text/t140");
678 addMimeType("text/texmacs", "tm", "ts");
679 addMimeType("text/tab-separated-values", "tsv");
680 addMimeType("text/uri-list");
681 addMimeType("text/vnd.abc");
682 addMimeType("text/vnd.curl");
683 addMimeType("text/vnd.DMClientScript");
684 addMimeType("text/vnd.flatland.3dml");
685 addMimeType("text/vnd.fly");
686 addMimeType("text/vnd.fmi.flexstor");
687 addMimeType("text/vnd.in3d.3dml");
688 addMimeType("text/vnd.in3d.spot");
689 addMimeType("text/vnd.IPTC.NewsML");
690 addMimeType("text/vnd.IPTC.NITF");
691 addMimeType("text/vnd.latex-z");
692 addMimeType("text/vnd.motorola.reflex");
693 addMimeType("text/vnd.ms-mediapackage");
694 addMimeType("text/vnd.sun.j2me.app-descriptor", "jad");
695 addMimeType("text/vnd.wap.si");
696 addMimeType("text/vnd.wap.sl");
697 addMimeType("text/vnd.wap.wml", "wml");
698 addMimeType("text/vnd.wap.wmlscript", "wmls");
699 addMimeType("text/x-bibtex", "bib");
700 addMimeType("text/x-c++hdr", "h++", "hpp", "hxx", "hh");
701 addMimeType("text/x-c++src", "c++", "cpp", "cxx", "cc");
702 addMimeType("text/x-chdr", "h");
703 addMimeType("text/x-crontab");
704 addMimeType("text/x-csh", "csh");
705 addMimeType("text/x-csrc", "c");
706 addMimeType("text/x-haskell", "hs");
707 addMimeType("text/x-java", "java");
708 addMimeType("text/x-literate-haskell", "lhs");
709 addMimeType("text/x-makefile");
710 addMimeType("text/x-moc", "moc");
711 addMimeType("text/x-pascal", "p", "pas");
712 addMimeType("text/x-pcs-gcd", "gcd");
713 addMimeType("text/x-perl", "pl", "pm");
714 addMimeType("text/x-python", "py");
715 addMimeType("text/x-server-parsed-html");
716 addMimeType("text/x-setext", "etx");
717 addMimeType("text/x-sh", "sh");
718 addMimeType("text/x-tcl", "tcl", "tk");
719 addMimeType("text/x-tex", "tex", "ltx", "sty", "cls");
720 addMimeType("text/x-vcalendar", "vcs");
721 addMimeType("text/x-vcard", "vcf");
722 addMimeType("video/bmpeg");
723 addMimeType("video/bt656");
724 addMimeType("video/celb");
725 addMimeType("video/dl", "dl");
726 addMimeType("video/dv", "dif", "dv");
727 addMimeType("video/fli", "fli");
728 addMimeType("video/gl", "gl");
729 addMimeType("video/jpeg");
730 addMimeType("video/h261");
731 addMimeType("video/h263");
732 addMimeType("video/h263-1998");
733 addMimeType("video/h263-2000");
734 addMimeType("video/mp1s");
735 addMimeType("video/mp2p");
736 addMimeType("video/mp2t");
737 addMimeType("video/mp4", "mp4");
738 addMimeType("video/mp4v-es");
739 addMimeType("video/mpeg", "mpeg", "mpg", "mpe");
740 addMimeType("video/mpv");
741 addMimeType("video/nv");
742 addMimeType("video/parityfec");
743 addMimeType("video/pointer");
744 addMimeType("video/quicktime", "qt", "mov");
745 addMimeType("video/vnd.fvt");
746 addMimeType("video/vnd.motorola.video");
747 addMimeType("video/vnd.motorola.videop");
748 addMimeType("video/vnd.mpegurl", "mxu");
749 addMimeType("video/vnd.mts");
750 addMimeType("video/vnd.nokia.interleaved-multimedia");
751 addMimeType("video/vnd.vivo");
752 addMimeType("video/x-la-asf", "lsf", "lsx");
753 addMimeType("video/x-mng", "mng");
754 addMimeType("video/x-ms-asf", "asf", "asx");
755 addMimeType("video/x-ms-wm", "wm");
756 addMimeType("video/x-ms-wmv", "wmv");
757 addMimeType("video/x-ms-wmx", "wmx");
758 addMimeType("video/x-ms-wvx", "wvx");
759 addMimeType("video/x-msvideo", "avi");
760 addMimeType("video/x-sgi-movie", "movie");
761 addMimeType("video/x-flv", "flv");
762 addMimeType("x-conference/x-cooltalk", "ice");
763 addMimeType("x-world/x-vrml", "vrm", "vrml", "wrl");
767 * Returns a list of all known MIME types.
769 * @return All known MIME types
771 public static List<String> getAllMimeTypes() {
772 return new ArrayList<String>(mimeTypes);
776 * Returns a list of MIME types that are registered for the given extension.
779 * The extension to get the MIME types for
780 * @return A list of MIME types, or an empty list if there are no registered
781 * MIME types for the extension
783 public static List<String> getMimeTypes(String extension) {
784 if (extensionMimeTypes.containsKey(extension)) {
785 return extensionMimeTypes.get(extension);
787 return Collections.emptyList();
795 * Adds a MIME type and optional extensions.
798 * The MIME type to add
800 * The extension the MIME type is registered for
802 private static void addMimeType(String mimeType, String... extensions) {
803 mimeTypes.add(mimeType);
804 for (String extension: extensions) {
805 if (!mimeTypeExtensions.containsKey(mimeType)) {
806 mimeTypeExtensions.put(mimeType, new ArrayList<String>());
808 mimeTypeExtensions.get(mimeType).add(extension);
809 if (!extensionMimeTypes.containsKey(extension)) {
810 extensionMimeTypes.put(extension, new ArrayList<String>());
812 extensionMimeTypes.get(extension).add(mimeType);