【问题标题】:Is there a java library equivalent to file command in unix是否有与 unix 中的文件命令等效的 java 库
【发布时间】:2011-02-13 07:35:02
【问题描述】:

有没有类似unix的命令file的java库?

即:

$ file somepicture.png
somepicture.png PNG image, 805 x 292, 8-bit/color RGB, non-interlaced

file 命令是一个很好的工具。我需要一些可以告诉我文件是否真的是我想要的东西的东西。 (即图片、文档等)

我知道我可以运行命令 file,但我正在寻找一个 java 库,而不是运行实际的 unix 命令。

【问题讨论】:

  • 我最终使用了 Apache Tika。 JMimeMagic 的文档记录很差。 (并不是说 Tika 更好,但 API 更容易 IMO)

标签: java unix file content-type


【解决方案1】:

快速谷歌搜索(对于公认的非显而易见的)"java magic file detection" 会找到一篇相当漂亮的文章,"Get the Mime Type from a File",它建议您使用以下内容之一:

【讨论】:

  • 谢谢。我认为这两个中的一个应该可以解决问题。它真的是我需要的文档和图像。
【解决方案2】:

从 Java 1.7 开始,您可以使用Files.probeContentType() 来探测文件。开箱即用,它使用平台上的机制来猜测内容类型,或者您可以根据需要插入自己的检测器。

【讨论】:

    【解决方案3】:

    您可以查看jmimemagic (tutorial)。我们已经使用它一段时间来验证上传的图像。到目前为止没有问题。

    【讨论】:

      【解决方案4】:

      我不确定它是否正是您正在寻找的,但以下链接可能对您有所帮助:

      http://www.rgagnon.com/javadetails/java-0487.html

      【讨论】:

      • +1 用于提供仅限 JDK 的解决方案。我不确定这种方法有多好,但它可能是用户正在寻找的。​​span>
      • @bkail javax.activation.MimetypesFileTypeMap 只检查文件扩展名,这肯定不是确定“文件是否真的是我想要的文件”的可靠方法
      • 是的,JDK 解决方案不像 unix 中的 file 那样工作。 file 真正查看文件并告诉它是什么。不像 windows 那样关心扩展
      • @sfussenegger java.net.URLConnection.guessContentTypeFromStream(InputStream) 肯定不会使用文件扩展名来做出决定。
      • @bkail 链接的文章中没有提到,是吗?无论如何,它不能可靠地工作。我刚刚尝试过,但对于一个简单的 jpg 图像失败了。
      【解决方案5】:

      看看mime-utils。 它适用于内容和/或扩展。

      【讨论】:

        【解决方案6】:

        JDK 中最接近的是@987654321@

        【讨论】:

          【解决方案7】:

          一直在寻找同样的东西,发现了这个:https://github.com/j256/simplemagic - 它似乎是“文件”的克隆,它甚至使用了内置魔法文件的文件副本。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-12
            • 1970-01-01
            • 2019-03-23
            • 2010-12-30
            • 1970-01-01
            • 2020-11-30
            相关资源
            最近更新 更多