К сожалению,
mimeType = file.toURL().openConnection().getContentType();
не работает, поскольку это использование URL-адреса оставляет файл заблокированным, так что, например, он не может быть отменен.
Однако у вас есть это:
mimeType= URLConnection.guessContentTypeFromName(file.getName());
, а также следующее, что имеет преимущество, выходящее за рамки простого использования расширения файла, и заглядывает в контент
InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream
Однако, как было предложено по комментарию выше, встроенная таблица типов mime довольно ограничена, не включая, например, MSWord и PDF. Итак, если вы хотите обобщить, вам нужно выйти за рамки встроенных библиотек, используя, например, Mime-Util (это отличная библиотека, использующая как расширение файла, так и контент).