如何使用 Apache tika TypeDetector 检测文件是否为 mp3?

How to detect if file is mp3 using Apache tika TypeDetector?

我如何使用 apache tika 检测文件是否为 mp3? 我不只是在寻找基于文件扩展名的检测。

我正在使用:

typeTika = new Tika(new TypeDetector()); 

但是当我尝试检测类型答案时总是:

     application/octet stream

(无论我发送什么:mp3、图像等它总是 application/octet 流)

如何确定文件是否为 mp3?

这个问题不是重复的。 Here 有人使用带有文件扩展名检测功能的 Tika。 这对我来说还不够。 我需要根据文件类型而不是文件名知道文件是否为 mp3。我在文档中找不到有关如何执行此操作的任何信息。

TypeDetector 始终 return application/octet 流式传输所有文件类型,所以我想知道如何使用它来获取文件是否为 mp3 的信息。

取自 Apache Tika examples:

File file = new File("/path/to/file.mp3");

Tika tika = new Tika();
String type = tika.detect(file);
System.out.println(file + " : " + type);

这将同时检测文件内容和文件名。对于 MP3 文件,您将返回 audio/mpeg

Apache Tika can detect the MIME Type of each file. These days it's very common to use Multipurpose Internet Mail Extensions file type designators (MIME), and each file format has got its own MIME. In the following some of them are mentioned: (For more visit iana.org or fileformats.archiveteam.org)

  • .mp3 --> audio/mpeg
  • .mp4 --> video/mp4
  • .flac --> audio/x-flacaudio/flac
  • .png --> image/png
  • .jpg --> image/jpeg
  • .pdf --> application/pdf
  • .jar --> application/java-archive

要在您的项目中使用 Tika,请将以下 Maven 依赖项添加到您的 pom 文件中:

<!-- Apache Tika: detects and extracts metadata and text from a variety of files -->
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.0.0</version>
</dependency>

然后使用上述代码检测文件的 MIME 类型。

File file = new File("/path/to/music.mp3");
Tika tika = new Tika();
String mimeType = tika.detect(file);
System.out.println(mimeType); // Prints the MIME type of the file