私はファイルの内容(バイト配列)を見て、あなたにMIMEタイプを知らせるJavaライブラリを探しています。私はこのプロジェクトがjmimemagicを使っているのを発見しました。そして、それは現在(2006年以降)非アクティブなので、新しいファイルタイプ(例えばMS word docxフォーマット)をサポートしなくなりました。ファイルの内容からMIMEタイプを見つけるためのJavaライブラリ
12
A
答えて
5
コンテンツ検出にApache tikaを使用します。以下のリンクを見つけてください。 http://tika.apache.org/0.8/detection.html。私たちは、あなたがMavenの
ByteArrayInputStream bai = new ByteArrayInputStream(pByte);
ContentHandler contenthandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();
try {
parser.parse(bai, contenthandler, metadata);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TikaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Mime: " + metadata.get(Metadata.CONTENT_TYPE));
return metadata.get(Metadata.CONTENT_TYPE);
だけでなく、最も使用されるOffice形式を必要とする(とApacheティカを使用していない)誰かのために多分便利
9
を使用してティカを構築するときに見つけることができるので、多くのjarファイルの依存関係を持っている:
public class MimeTypeUtils {
private static final Map<String, String> fileExtensionMap;
static {
fileExtensionMap = new HashMap<String, String>();
// MS Office
fileExtensionMap.put("doc", "application/msword");
fileExtensionMap.put("dot", "application/msword");
fileExtensionMap.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
fileExtensionMap.put("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
fileExtensionMap.put("docm", "application/vnd.ms-word.document.macroEnabled.12");
fileExtensionMap.put("dotm", "application/vnd.ms-word.template.macroEnabled.12");
fileExtensionMap.put("xls", "application/vnd.ms-excel");
fileExtensionMap.put("xlt", "application/vnd.ms-excel");
fileExtensionMap.put("xla", "application/vnd.ms-excel");
fileExtensionMap.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
fileExtensionMap.put("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
fileExtensionMap.put("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
fileExtensionMap.put("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
fileExtensionMap.put("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
fileExtensionMap.put("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
fileExtensionMap.put("ppt", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pot", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pps", "application/vnd.ms-powerpoint");
fileExtensionMap.put("ppa", "application/vnd.ms-powerpoint");
fileExtensionMap.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
fileExtensionMap.put("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
fileExtensionMap.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
fileExtensionMap.put("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
fileExtensionMap.put("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
fileExtensionMap.put("potm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
fileExtensionMap.put("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
// Open Office
fileExtensionMap.put("odt", "application/vnd.oasis.opendocument.text");
fileExtensionMap.put("ott", "application/vnd.oasis.opendocument.text-template");
fileExtensionMap.put("oth", "application/vnd.oasis.opendocument.text-web");
fileExtensionMap.put("odm", "application/vnd.oasis.opendocument.text-master");
fileExtensionMap.put("odg", "application/vnd.oasis.opendocument.graphics");
fileExtensionMap.put("otg", "application/vnd.oasis.opendocument.graphics-template");
fileExtensionMap.put("odp", "application/vnd.oasis.opendocument.presentation");
fileExtensionMap.put("otp", "application/vnd.oasis.opendocument.presentation-template");
fileExtensionMap.put("ods", "application/vnd.oasis.opendocument.spreadsheet");
fileExtensionMap.put("ots", "application/vnd.oasis.opendocument.spreadsheet-template");
fileExtensionMap.put("odc", "application/vnd.oasis.opendocument.chart");
fileExtensionMap.put("odf", "application/vnd.oasis.opendocument.formula");
fileExtensionMap.put("odb", "application/vnd.oasis.opendocument.database");
fileExtensionMap.put("odi", "application/vnd.oasis.opendocument.image");
fileExtensionMap.put("oxt", "application/vnd.openofficeorg.extension");
}
public static String getContentTypeByFileName(String fileName) {
// 1. first use java's buildin utils
FileNameMap mimeTypes = URLConnection.getFileNameMap();
String contentType = mimeTypes.getContentTypeFor(fileName);
// 2. nothing found -> lookup our in extension map to find types like ".doc" or ".docx"
if (!StringUtils.hasText(contentType)) {
String extension = FilenameUtils.getExtension(fileName);
contentType = fileExtensionMap.get(extension);
}
return contentType;
}
}
2
私はjavax.activation.MimetypesFileTypeMap
を使用します。それは小さいセットで始まります:$JRE_HOME/lib/content-types.properties
、しかしあなた自身を加えることができます。ファイルmime.types
をMimetypesFileTypeMap
のjavadocで表示される形式で作成します(私はネットから大量のリストを作成し、マッサージして追加したタイプを追加しました)。これで、コードにmime.types
ファイルを開き、その内容をマップに追加することで追加できます。しかし、簡単な解決策は、mime.types
ファイルを自分のjarファイルのMETA-INF
に追加することです。 java.activation
はそれを自動的に取り上げます。
関連する問題
- 1. JavaのMIMEタイプ検出ライブラリ
- 2. Railsヘルパーから現在のレンダーMIMEタイプを見つける
- 3. PHPでリモート/外部ファイルのMIMEタイプを見つける
- 4. ファイル/ MIMEタイプ検出用のNETライブラリ
- 5. 2つのファイルの内容の違いを見つける
- 6. opencvライブラリを見つけるための.bashrcファイル
- 7. リストから平均を見つけるためのJavaのマイクロベンチマーク
- 8. ファイル内のテキストパターンを見つけるためのマルチスレッド化手法
- 9. 点を含むすべてのポリゴンを見つけるためのJavaライブラリ
- 10. 新しいタイプのファイルを見つけるためにスクリプトを更新する
- 11. 2つのディレクトリに異なる内容のファイル名を見つける方法
- 12. 拡張子のない画像のMIMEタイプを見つける方法は?
- 13. ファイルのアップロード中に元のMIMEタイプを見つけるにはどうすればいいですか?
- 14. パスの交差を見つけるためのRaphaelJSライブラリ
- 15. mimeタイプのファイルをc#
- 16. JavaのMIMEタイプから適切なファイル拡張子を決定する方法
- 17. Cheerioがテーブルの内容を見つけられない
- 18. ライブラリを見つけるためのldルックアップ
- 19. mingwライブラリに見つからないシンボルを見つける
- 20. INVALID_REQUEST_PARAMETER - マルチパートフォームの内容-Dispositionヘッダーで見つからなかったファイル名
- 21. ストリーミングのためにサーバーのインターネット帯域幅からJavaを見つける
- 22. zipファイルの中で私に送られた拡張子のないファイルのMIMEタイプを見つけるにはどうすればいいですか?
- 23. Java - フォルダ内のMimeタイプをカウントする方法
- 24. regex - java-8でファイル内のパターンを見つける
- 25. S3にアップロードされたファイルのMIMEタイプ
- 26. 失われたgit stashの内容を見つけよう
- 27. PHPファイルのカスタムMIMEタイプ
- 28. wix light.exeが ''タイプのファイルを見つけられません
- 29. ファイルが見つかりません。ファイルの内容を読み取るための例外です。
- 30. ファイルからの列の平均を見つけるためのawkコマンド
http://sourceforge.net/projects/mime-util/files/mime-util/mime-util-2.1.3/ – khachik
著者が明示的に尋ねるので、これは参照された質問と重複しているとは思わない他の質問の解決策はファイル(包括的なファイル名)を参照します。 – danielp
[こちら](http://www.rgagnon.com/javadetails/java-0487.html)のソリューションはどうですか?彼らはあなたのために働いていないのですか? – javamonkey79