使用 Apache Tika 从 Zip 中的文件中提取内容
满足您使用以下命令从 Zip 存档中的文件中读取和提取内容的要求Apache Tika,您需要对当前代码进行一些调整。虽然您的方法基本上是正确的,但问题在于获取 zip 中每个文件的 InputStream。
这是解决此问题的代码的更新版本:
<code class="java">import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.BodyContentHandler; import org.apache.tika.parser.ParseContext; import org.xml.sax.SAXException; public class SampleZipExtractNew { public static void main(String[] args) throws IOException { List<String> tempString = new ArrayList<>(); StringBuffer sbf = new StringBuffer(); File file = new File("C:\Users\xxx\Desktop\abc.zip"); ZipFile zipFile = new ZipFile(file); Enumeration<? extends ZipEntry> entries = zipFile.entries(); BodyContentHandler textHandler = new BodyContentHandler(); Metadata metadata = new Metadata(); Parser parser = new AutoDetectParser(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); try (InputStream inputStream = zipFile.getInputStream(entry)) { if (entry.getName().endsWith(".txt") || entry.getName().endsWith(".pdf") || entry.getName().endsWith(".docx")) { parser.parse(inputStream, textHandler, metadata, new ParseContext()); tempString.add(textHandler.toString()); } } } for (String text : tempString) { System.out.println("Apache Tika - Converted input string : " + text); sbf.append(text); System.out.println("Final text from all the three files " + sbf.toString()); } } }</code>
在此修订版中代码:
以上是如何使用 Apache Tika 从 ZIP 存档中的文件中提取内容?的详细内容。更多信息请关注PHP中文网其他相关文章!