我使用Apache和Java从PDF和Zip文件中提取文本。现在在处理大型文件时,我希望将进度报告添加到我的应用程序中。为此,我需要估计提取大小来计算完成的百分比(通过将其与写入输出的字节数相匹配)。
我搜了很多遍,在任何地方都找不到任何与此相关的东西。
apache提供了任何进度报告吗?有什么解决办法吗?
编辑:我正在使用apache tika-parsers的java库,来自组org.apache.tika的tika-server。并使用以下代码通过Java直接调用它们。
AutoDetectParser parser = new AutoDetectParser();
ParseContext context = getParseContext(extractionPolicy, parser);
Metadata metadata = new Metadata();
parser.parse(inputStream, handler, metadata, context);
return metadata;发布于 2019-10-14 11:35:23
我走错路了。对于进度报告,我不是估计输出字节和提取大小,而是计算输入流上的读取字节。
将输入字符串包装在AWS或Apache提供的CountingInputStream类中,并将读取字节与总内容字节匹配以获得百分比。
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;
}https://stackoverflow.com/questions/58306621
复制相似问题