我所拥有的程序正在检查大多数文件类型,如果我使用程序运行时有一个.properties文件,它会显示text / plain而不是属性文件。如何自定义程序以显示属性文件的mime类型(基于扩展名和内容):
以下代码:
public class TikaFileTypeDetector {
private final Tika tika = new Tika();
public TikaFileTypeDetector() {
super();
}
public String probeContentType(Path path) throws IOException {
// Check contents first
String fileContentDetect = tika.detect(path.toFile());
if (!fileContentDetect.equals(MimeTypes.OCTET_STREAM)) {
return fileContentDetect;
}
// Try file name only if content search was not successful
String fileNameDetect = tika.detect(path.toString());
if (!fileNameDetect.equals(MimeTypes.OCTET_STREAM)) {
return fileNameDetect;
}
return null;
}
public static void main(String[] args) throws IOException {
Tika tika = new Tika();
if (args.length != 1) {
printUsage();
return;
}
Path path = Paths.get(args[0]);
TikaFileTypeDetector detector = new TikaFileTypeDetector();
String contentType = detector.probeContentType(path);
System.out.println("File is of type - " + contentType);
}
public static void printUsage() {
System.out.print("Usage: java -classpath ... "
+ TikaFileTypeDetector.class.getName()
+ " ");
}
}
以下是mime-type的自定义xml:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
<mime-type type="application/hello">
<glob pattern="*.properties"/>
</mime-type>
</mime-info>
在apache docs中,它表示如上所述在xml中添加新的mime类型并将其添加到代码库中。我现在如何将其添加到我的代码中?我无法找到关于此
的更多信息注意:我正在使用apache tika
答案 0 :(得分:0)
Tika 1.10或更高版本通过向其text/x-java-properties
tika-mimetypes.xml
的新mime类型来解决此问题
使用以下相关性,这样您就不必通过添加自定义mimetype.xml
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.10</version>
</dependency>
我还想补充一点,根据documentation,项目团队欢迎添加任何标准mime类型的补丁如果org/apache/tika/mime/tika-mimetypes.xml
中缺少它。