为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Apache Tika 进行进度报告?

使用 Apache Tika 进行进度报告?

梵蒂冈之花 2023-10-12 09:47:10
我使用 Apache Tika 和 Java 从 PDF 和 Zip 文件中提取文本。现在,在处理大文件时,我想向我的应用程序添加进度报告。为此,我需要估计提取大小来计算完成的百分比(通过将其与写入输出的字节数进行匹配)。我进行了很多搜索,但在任何地方都找不到与此相关的任何内容。apache tika 是否提供任何类型的进度报告?有什么解决方法吗?编辑:我正在使用来自组的apache tikatika-parsers的java 库。并通过Java直接调用它们,代码如下。tika-serverorg.apache.tikaAutoDetectParser parser = new AutoDetectParser();ParseContext context = getParseContext(extractionPolicy, parser);Metadata metadata = new Metadata();parser.parse(inputStream, handler, metadata, context);return metadata;
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

我的做法是错误的。为了报告进度,我没有估计输出字节和提取大小,而是计算了输入流上的读取字节数。


将输入字符串包装在CountingInputStreamAWS SDK 或 Apache Tika 提供的类中,并将读取的字节与总内容字节进行匹配以获得百分比。


CountingInputStream inputStream;

Long totalContentLength;


private int getProgressPercentage(){

    Long processedBytes = this.inputStream.getByteCount();

    if (0 < totalContentLength && processedBytes <= totalContentLength) {

        int percent = (int) ((processedBytes * 100.0 / totalContentLength));

        LOGGER.info("Processed bytes: {}, Total bytes: {}, Progress: {}%", processedBytes, totalContentLength, percent);

        return percent;

    }

    return 0;

}


查看完整回答
反对 回复 2023-10-12
  • 1 回答
  • 0 关注
  • 40 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信