使用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中文網其他相關文章!