Heim  >  Artikel  >  Java  >  Wie lese ich mit Apache Tika Inhalte aus mehreren Dateitypen in einem Zip-Archiv?

Wie lese ich mit Apache Tika Inhalte aus mehreren Dateitypen in einem Zip-Archiv?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 21:20:30715Durchsuche

How Do I Read Content from Multiple File Types Within a Zip Archive Using Apache Tika?

Inhalte aus Dateien in Zip lesen, erreicht mit Apache Tika

Herausforderung:

Sie möchten ein Java-Programm schreiben, das Extrahiert und liest den Inhalt mehrerer Dateien in einem ZIP-Archiv mit Apache Tika. Konkret enthält Ihre ZIP-Datei eine Mischung aus Text-, PDF- und DOCX-Dateien.

Lösung:

public class ZipContentExtractor {

    public static void main(String[] args) throws IOException, SAXException, TikaException {
        File zipFile = new File("C:\Users\xxx\Desktop\abc.zip");

        try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipFile))) {
            ZipEntry entry;
            while ((entry = zipInputStream.getNextEntry()) != null) {
                // Checking file types
                if (entry.getName().endsWith(".txt") || entry.getName().endsWith(".pdf") || entry.getName().endsWith(".docx")) {
                    // Handling text files
                    if (entry.getName().endsWith(".txt")) {
                        BodyContentHandler textHandler = new BodyContentHandler();
                        Parser parser = new AutoDetectParser();
                        parser.parse(zipInputStream, textHandler, new Metadata(), new ParseContext());
                        System.out.println("TXT file content: " + textHandler.toString());
                    }
                    // Handling PDF files
                    else if (entry.getName().endsWith(".pdf")) {
                        Metadata metadata = new Metadata();
                        Parser parser = new PDFParser();
                        parser.parse(zipInputStream, new StreamingContentHandler(), metadata, new ParseContext());
                        System.out.println("PDF file content: " + metadata.get("xmpDM:documentID"));
                    }
                    // Handling DOCX files
                    else {
                        BodyContentHandler textHandler = new BodyContentHandler();
                        Parser parser = new OOXMLParser();
                        parser.parse(zipInputStream, textHandler, new Metadata(), new ParseContext());
                        System.out.println("DOCX file content: " + textHandler.toString());
                    }
                }
            }
        }
    }
}

Erklärung:

  • Der Code durchläuft die Einträge in der ZIP-Datei.
  • Für jeden Eintrag prüft er den Dateityp und verarbeitet ihn entsprechend der Dateierweiterung.
  • Für Bei Textdateien wird der AutoDetectParser von Apache Tika verwendet, um den Inhalt in einen String zu analysieren.
  • Bei PDF-Dateien wird der PDFParser verwendet, um Metadaten wie die Dokument-ID zu extrahieren.
  • Bei DOCX-Dateien Der OOXMLParser wird verwendet, um den Inhalt in einen String zu analysieren.

Das obige ist der detaillierte Inhalt vonWie lese ich mit Apache Tika Inhalte aus mehreren Dateitypen in einem Zip-Archiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn