提问者:小点点

如何向apache tika添加新的mime类型


这是我用于读取mime类型的类。我正在尝试添加一个新的mime类型(属性文件)并读取它。

这是我的类文件:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package check_mime;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.tika.Tika;
import org.apache.tika.mime.MimeTypes;


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()
                + " ");
    }
}

从这些文档中,我创建了一个自定义xml:

 <?xml version="1.0" encoding="UTF-8"?>
 <mime-info>
   <mime-type type="text/properties">
          <glob pattern="*.properties"/>
   </mime-type>
 </mime-info>

现在我如何添加到我的程序并阅读它。我必须创建一个解析器吗?我被困在这里了。


共3个答案

匿名用户

Apache Tika 5分钟解析器说明中介绍了这一点。添加对Java的支持。属性文件,您应该首先创建一个名为自定义mimetypes的文件。xml,并用如下内容填充它:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
  <mime-type type="text/properties">
     <_comment>Java Properties</_comment>
     <glob pattern="*.properties"/>
     <sub-class-of type="text/plain"/>
   </mime-type>
</mime-info>

接下来,你需要把它放在蒂卡可以找到的地方,用正确的名字。它必须存储为org/apache/tika/mime/custom mimetypes。类路径上的xml。最简单的方法是创建目录结构,移动新文件,然后将根目录添加到类路径中。对于部署,您应该将其包装到一个jar中,并将其放在类路径上

如果小心的话,可以使用Tika应用程序检查mime类型文件是否已加载。将代码打包为jar,将其作为如下方式运行:

java -classpath tika-app-1.10-SNAPSHOT.jar:my-custom-mimetypes.jar org.apache.tika.cli.TikaCLI --list-supported-types | grep text/properties

或者,如果您在本地目录中有它,请尝试以下操作

ls -l org/apache/tika/mime/custom-mimetypes.xml
# Check a file was found, with some content in it
java -classpath tika-app-1.10-SNAPSHOT.jar:. org.apache.tika.cli.TikaCLI --list-supported-types | grep text/properties

如果没有显示mime类型,则路径或文件名不正确,请仔细检查

(或者,升级到Apache Tika的更新版本,因为r1686315 Tika内置了Java属性mimetype!)

匿名用户

在您的资源文件夹中,添加包org\apache\tika\mime,并创建文件自定义mimetypes。xml。

把下面的代码

<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
  <mime-type type="custom-mime-type">
    <glob pattern="*.custom-extension"/>
  </mime-type>
</mime-info>

用mime类型替换自定义mime类型,用扩展名替换自定义扩展名。请检查下面的目录结构。

顺便说一句,您也可以通过下载该文件并放在custom-mimetypes.xml旁边来本地加载tike mime类型。这仅在您需要更改标准tike mime类型时有用。要记住的一点是,您不能在两个xml中拥有相同的mime类型/扩展名。

匿名用户

Tika将通过Java资源加载检测您的自定义定义,并自动将其添加到自己的定义中:为此,您需要将其命名custom-mimetypes.xml并将其放入代码库中的包org.apache.tika.mime。

如果从类创建jar文件,还需要在jar中包含custom-mimetypes.xml。