获取文件mime类型

时间:2015-07-19 13:14:27

标签: java file mime-types

我正在尝试使用以下命令获取没有扩展名的文件的mime类型:

    File file = new File("C:\\Users\\user\\Desktop\\a.txt");
    File file1 = new File("C:\\Users\\user\\Desktop\\folder\\a");

    MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();

    // only by file name
    String mimeType = mimeTypesMap.getContentType(file1);

mime类型的文件a.txt是text / plain,这是正确的, 但是file1的mime类型是application / octet-stream。

虽然它们是同一个文件但是一个没有扩展名,而另一个没有扩展名,那么获取没有扩展名的mime类型文件的最佳和正确方法是什么?

我使用了像Tika这样的第三方工具,但我不想使用它,因为它在我的应用上发生了很多冲突。

2 个答案:

答案 0 :(得分:0)

Tika使用两种方式来检测文件类型。第一种方法是基于文件扩展名,它与Tika支持的文件类型进行比较。第二种方式是"魔术探测器"。它解析文件的陈述字节,寻找模式。

如果您的文件没有提供扩展名且没有神奇地检测到,您将获得默认的mimetype application / octet-stream。

Java SE不支持魔术检测。

答案 1 :(得分:0)

如果您使用的是Java7,则有一种获取MIME类型的默认实现: - Files.probeContentType(path)