我使用 Apache Tika 和 Java 從 PDF 和 Zip 文件中提取文本?,F在,在處理大文件時,我想向我的應用程序添加進度報告。為此,我需要估計提取大小來計算完成的百分比(通過將其與寫入輸出的字節數進行匹配)。我進行了很多搜索,但在任何地方都找不到與此相關的任何內容。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;
}
添加回答
舉報
0/150
提交
取消