Java 估计文件是否为MIME类型

Java 估计文件是否为MIME类型,java,mime-types,Java,Mime Types,如果文件是MIME类型,则应检查此方法。为了实现这一目标,我正在使用方法。 然而,也许是决定同一问题的另一种方式。还有哪些替代方案(如果有的话) 代码: class ProbeContentTypeCheker implements Checker { @Override public boolean check(File fileCheck) { try { Path filePath = FileSystems.getDefault(

如果文件是MIME类型,则应检查此方法。为了实现这一目标,我正在使用方法。
然而,也许是决定同一问题的另一种方式。还有哪些替代方案(如果有的话)

代码:

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;
    }
}
问题:

  • 是否有其他方法可以检查文件中的MIME类型

您可以使用
字符串mimeType=new MimetypesFileTypeMap()


请注意,如果未找到MIME类型,则返回
应用程序/octet流
,而不是
null

如果无法使用Java 7,另一种选择是使用
URLConnection.guessContentTypeFromName(字符串文件名)

请注意,如果无法猜测内容类型,该方法将返回
null

获取文件mime类型有两种方法:

  • 通过文件的标识-这是一种可靠的方法,但需要从文件中读取信息
  • 根据文件扩展名猜测-这是一种快速的方法,但可能不太准确
  • 以下解决方案使用第1种方法:

  • -用于使用现有解析器库从各种文档中检测和提取元数据和结构化文本内容的工具包
  • -用于确定文件或流的MIME类型的Java库
  • —使Java程序能够基于文件扩展名、魔法数据和内容嗅探检测MIME类型
  • 以下解决方案使用第二种方法:

  • javax.activation.MimetypesFileTypeMap-这是JavaBeans激活框架的一部分。MimetypesFileTypeMap在用户系统的不同位置查找MIME类型文件条目
  • 使用java.net.URL-扩展名和mime类型之间的映射在文件[jre_home]/lib/content-types.properties中定义

  • 有关更多信息,请参见此

    getContentType(theFile)
    =>我们是否可以在那里查看
    theFile.getAbsolutePath()
    ?修复后-这有效吗?公共布尔检查(文件文件检查){String mimeType=new MimetypesFileTypeMap().getContentType(文件检查);if(mimeType==null){return false;}return true;}-这正确吗?@nazar_艺术号,因为正如我所说的,如果没有找到MIME类型,返回的是
    application/octet-stream
    ,而不是
    null
    <代码>应用程序/八位字节流
    通常是任何文件的默认MIME类型,如果没有找到其他更具体的文件。如果这不正确?如何修复此方法并证明良好的工作文件检查方法?复制类MimetypesFileTypeMap的源代码并将静态变量“defaultType”设置为null。但除非有具体原因,否则我不会这样做。您可能需要添加其他mime类型,请参阅是否可以添加其他变体检查mime类型(枚举列表)?是否介意我询问,如果您可以查看。谢谢。我最终使用了
    mime util
    ,它甚至可以在9GB以上的文件上运行。