Java tutorial
//package com.java2s; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class Main { private static final Map<String, String> mimeTypeToExtensionMap = new HashMap<String, String>(); private static final Map<String, String> extensionToMimeTypeMap = new HashMap<String, String>(); /** * This isn't what the RI does. The RI doesn't have hard-coded defaults, so * supplying your own "content.types.user.table" means you don't get any of * the built-ins, and the built-ins come from * "$JAVA_HOME/lib/content-types.properties". */ private static void applyOverrides() { // Get the appropriate InputStream to read overrides from, if any. InputStream stream = getContentTypesPropertiesStream(); if (stream == null) { return; } try { try { // Read the properties file... Properties overrides = new Properties(); overrides.load(stream); // And translate its mapping to ours... for (Map.Entry<Object, Object> entry : overrides.entrySet()) { String extension = (String) entry.getKey(); String mimeType = (String) entry.getValue(); add(mimeType, extension); } } finally { stream.close(); } } catch (IOException ignored) { } } private static InputStream getContentTypesPropertiesStream() { // User override? String userTable = System.getProperty("content.types.user.table"); if (userTable != null) { File f = new File(userTable); if (f.exists()) { try { return new FileInputStream(f); } catch (IOException ignored) { } } } // Standard location? File f = new File(System.getProperty("java.home"), "lib" + File.separator + "content-types.properties"); if (f.exists()) { try { return new FileInputStream(f); } catch (IOException ignored) { } } return null; } private static void add(String mimeType, String extension) { // If we have an existing x -> y mapping, we do not want to // override it with another mapping x -> y2. // If a mime type maps to several extensions // the first extension added is considered the most popular // so we do not want to overwrite it later. if (!mimeTypeToExtensionMap.containsKey(mimeType)) { mimeTypeToExtensionMap.put(mimeType, extension); } if (!extensionToMimeTypeMap.containsKey(extension)) { extensionToMimeTypeMap.put(extension, mimeType); } } }