我正在尝试使用以下命令获取没有扩展名的文件的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这样的第三方工具,但我不想使用它,因为它在我的应用上发生了很多冲突。
答案 0 :(得分:0)
Tika使用两种方式来检测文件类型。第一种方法是基于文件扩展名,它与Tika支持的文件类型进行比较。第二种方式是"魔术探测器"。它解析文件的陈述字节,寻找模式。
如果您的文件没有提供扩展名且没有神奇地检测到,您将获得默认的mimetype application / octet-stream。
Java SE不支持魔术检测。
答案 1 :(得分:0)
如果您使用的是Java7,则有一种获取MIME类型的默认实现: - Files.probeContentType(path)
。