Java 如何使用文件二进制内容查找文件mime类型/内容类型?
我有文件内容,当前为Java 如何使用文件二进制内容查找文件mime类型/内容类型?,java,file,mime-types,content-type,Java,File,Mime Types,Content Type,我有文件内容,当前为byte[],我想知道它的mime类型/内容类型头 问题是,我在web上看到了许多示例来查找它,但只有当文件实际存在时才查找 如何仅通过此字节[]获取此信息 我测试的大多数代码如下: File f = new File("gumby.gif"); System.out.println("Mime Type: " + new MimetypesFileTypeMap().getContentType(f)); 编辑1: 这段代码给了我一个错误的结果:application/o
byte[]
,我想知道它的mime类型/内容类型头
问题是,我在web上看到了许多示例来查找它,但只有当文件实际存在时才查找
如何仅通过此字节[]
获取此信息
我测试的大多数代码如下:
File f = new File("gumby.gif");
System.out.println("Mime Type: " + new MimetypesFileTypeMap().getContentType(f));
编辑1:
这段代码给了我一个错误的结果:application/octet-stream
有没有一种方法可以在不创建文件的情况下获取此信息
编辑2:
我尝试了以下代码:
public static void main(String[] args) throws Exception{
Tika tika = new Tika();
byte[] content = readFile().getBytes();
System.out.println(tika.detect(content));
}
private static String readFile() throws Exception{
BufferedReader br = new BufferedReader(new FileReader("c:\\pic.jpg"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
String everything = sb.toString();
return everything;
} finally {
br.close();
}
}
它总是返回
application/octet-stream
,这是因为我使用byte[]
作为参数吗?您有没有看到任何方法来识别Java程序中现有文件的MIME类型(不调用外部本机可执行文件)?没有,大多数示例都是在创建它时,您可能需要使用一个库来解析文件头以猜测其内容。ApacheTika似乎是您所需要的()这似乎是一个复制品。我已将其标记为关闭。你可以在这个问题上找到所有的方法。只要看一下文件: