8

This method should be check if a file is MIME type. To achieve this goal I am using method probeContentType().
However maybe is another way to decide same question. Which are the other alternatives (if there are any)?

Code:

class ProbeContentTypeCheker implements Checker {

    @Override
    public boolean check(File fileCheck) {
        try {
            Path filePath = FileSystems.getDefault().getPath(
                    fileCheck.getAbsolutePath());
            if ((Files.probeContentType(filePath) != null)) {
                return true;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return false;
    }
}

Question:

  • Are there other alternatives to check MIME type in files?
4

3 に答える 3

6

ファイルのmimeタイプを取得するには、次の2つの方法があります。

  1. ファイルのマジックナンバーによる識別-これは信頼できるアプローチですが、ファイルから情報を読み取る必要があります
  2. ファイル拡張子で推測する-これは高速なアプローチですが、精度が低くなる可能性があります

次のソリューションは、最初のアプローチを使用します。

  1. ApacheTika-既存のパーサーライブラリを使用してさまざまなドキュメントからメタデータと構造化テキストコンテンツを検出および抽出するためのツールキット
  2. JMimeMagic-ファイルまたはストリームのMIMEタイプを判別するためのJavaライブラリ
  3. mime-util -Javaプログラムが、ファイル拡張子、マジックデータ、およびコンテンツスニッフィングに基づいてMIMEタイプを検出できるようにします

次のソリューションは、2番目のアプローチを使用します。

  1. javax.activation.MimetypesFileTypeMap-JavaBeansActivationFrameworkのこの部分。MimetypesFileTypeMapは、ユーザーのシステムのさまざまな場所でMIMEタイプのファイルエントリを探します。
  2. java.net.URLの使用-拡張子とmime-typeの間のマッピングは、ファイル[jre_home]/lib/content-types.propertiesで定義されています。

詳細については、この投稿を参照してください

于 2013-03-09T09:27:00.183 に答える
1

使用できますString mimeType = new MimetypesFileTypeMap().getContentType(theFile);

MIME タイプが見つからない場合は、application/octet-stream代わりに が返されることに注意してくださいnull

于 2013-03-01T10:31:36.080 に答える
0

もう 1 つの方法は、URLConnection.guessContentTypeFromName(String fileName)Java 7 を使用できない場合に Use を使用することです。コンテンツ タイプを推測できない場合、メソッドは を返すことに注意してくださいnull

于 2013-03-08T11:00:05.617 に答える