如何检查属性文件的文件类型
Posted
技术标签:
【中文标题】如何检查属性文件的文件类型【英文标题】:How to check file type of properties file 【发布时间】: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 类型,但是如何将它添加到我的程序中,以便我的应用程序可以读取新的文件类型。网站上的信息不多
【参考方案1】:
Tika 1.10 或更高版本通过在其tika-mimetypes.xml
中添加一个名为text/x-java-properties
的新mime 类型来解决此问题
使用以下依赖项,这样您就不必通过添加自定义 mimetype.xml
来弄脏您的双手
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.10</version>
</dependency>
我还想补充一点,根据documentation,如果org/apache/tika/mime/tika-mimetypes.xml
中缺少任何标准mime 类型,项目团队欢迎添加补丁。
【讨论】:
以上是关于如何检查属性文件的文件类型的主要内容,如果未能解决你的问题,请参考以下文章