【问题标题】: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 类型,但是如何将它添加到我的程序中,以便我的应用程序可以读取新的文件类型。网站上的信息不多

标签: java


【解决方案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 类型,项目团队欢迎添加补丁。

【讨论】:

    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2012-02-05
    • 1970-01-01
    相关资源
    最近更新 更多