【发布时间】:2015-09-02 19:54:35
【问题描述】:
我拥有的程序正在检查大多数文件类型,但是当我使用程序运行时,我有一个 .properties 文件,它说的是文本/纯文本而不是属性文件。如何自定义我的程序以显示属性文件的 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
【问题讨论】:
-
text/plain是 java 属性文件的合理值。 -
只要添加一个检查,如果 mime 类型是 text/plain 并且文件名以 .properties 结尾,则返回您的自定义 mime 类型值。
-
也就是说,tika 文档表明有一个文件可以根据文件名 glob 模式添加 mimetypes:tika.apache.org/1.8/parser_guide.html#Add_your_MIME-Type
-
@JPMoresmau 感谢您指出这一点。如果您有任何示例或链接?
-
@Gus 感谢您的链接。我在 xml 中创建了一个自定义 mime 类型,但是如何将它添加到我的程序中,以便我的应用程序可以读取新的文件类型。网站上的信息不多
标签: java