java - Apache Tika 检测返回不一致的结果

标签 java file-type apache-tika

我正在尝试使用 apache tika 找出文件的内容类型。

同时我发现了这种不一致的行为。

final Tika tika = new Tika();

String fileType = tika.detect(uploadedInputStream);
System.out.println(fileType);
String newFileType = tika.detect(uploadedInputStream);
System.out.println(newFileType);

上面的代码给出了

application/pdf
application/octet-stream

在这两种情况下,我都希望输出为 application/pdf

谁能解释一下为什么会这样?我怎样才能得到预期的结果?

最佳答案

当我按照评论中的建议将 InputStream 包装在 TikaInputStream 中时,我可以看到问题已解决

    final Tika tika = new Tika();
    TikaInputStream tikaInputStream = TikaInputStream.get(uploadedInputStream);
    String fileType = tika.detect(tikaInputStream);
    System.out.println(fileType);
    final Tika newTika = new Tika();
    String newFileType = newTika.detect(tikaInputStream);
    System.out.println(newFileType);

输出:

     application/pdf
     application/pdf

关于java - Apache Tika 检测返回不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613838/

相关文章:

java - 像这样使用继承是个坏主意吗

java - 如何计算以像素为单位的字符串字体宽度?

JavaScript:即使通过 htaccess 隐藏文件扩展名,我也可以获得文件扩展名吗

syntax-highlighting - Vim语法和文件类型检测非常奇怪的行为

file - 限制 CakePHP 文件输入中的文件类型

lucene - Solar CELL/Tika 输出的格式是什么?以及如何修复它?

java - 如何对 JSONArray 进行排序?

java - 四舍五入到最接近的 100

pdf - 如何使用 Apache Tika 获取 PDF 中元素的样式信息?

java - 带有 java Applet 的嵌套 Jar