【问题标题】:How do I find the filetype of a file in Java? [duplicate]如何在 Java 中找到文件的文件类型? [复制]
【发布时间】:2022-01-01 01:31:11
【问题描述】:

首先要非常清楚:我不关心文件扩展名是什么,只关心实际内容。**我实际上是在尝试找到 file 命令的 Java 实现。

我目前正在编写一个图像分类器,将我的所有照片转换为 PNG 格式。为此,我必须转换我的文件,如果它们是 JPG 或 Web/P 或其他任何文件。我绕过 Stack Overflow,所有回复都在查看文件扩展名,这不是我感兴趣的。我正在尝试使用 Files.probeContentType(),但(据我所知)只查看文件扩展名:

public class Type {

        public static void main(String[] args) throws IOException {

                System.out.println(Files.probeContentType(new File(args[0]).toPath()));

        }

}
bleh@bleh:/tmp$ file png
png: PNG image data, 600 x 600, 8-bit/color RGB, non-interlaced
bleh@bleh:/tmp$ java Type png
null

如上所述,我不在乎文件扩展名是什么。我只是想在 Java 中近似 file 命令。

我也愿意接受完全不同的编程语言的建议(尽管不是 bash)。

【问题讨论】:

  • 你的代码需要根据文件内容进行猜测。这就是 Linux 中的“文件”命令的作用。以“幻数”开头的特定文件类型可能会使其变得容易,但这仍然是一个猜测。我会看一下 file 命令的代码。

标签: java image-processing


【解决方案1】:

您可以从 apache tika 使用,如下所示:

<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.2.1</version>
</dependency>

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

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多