Heim > Java > javaLernprogramm > Hauptteil

Wie extrahiere ich Inhalte aus Dateien in einem ZIP-Archiv mit Apache Tika?

Susan Sarandon
Freigeben: 2024-10-29 06:59:02
Original
301 Leute haben es durchsucht

How to extract content from files within a ZIP archive using Apache Tika?

Inhalte aus Dateien in einem Zip-Archiv mit Apache Tika extrahieren

Um Ihre Anforderung zum Lesen und Extrahieren von Inhalten aus Dateien in einem Zip-Archiv mit zu erfüllen Apache Tika, Sie müssen einige Anpassungen an Ihrem aktuellen Code vornehmen. Obwohl Ihr Ansatz weitgehend richtig ist, besteht das Problem darin, den InputStream für jede Datei in der ZIP-Datei zu erhalten.

Hier ist eine aktualisierte Version Ihres Codes, die dieses Problem behebt:

<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>
Nach dem Login kopieren

In dieser Überarbeitung Code:

  • Wir initialisieren eine ZipFile-Instanz mit der zu verarbeitenden ZIP-Datei.
  • Wir durchlaufen die Einträge der ZIP-Datei mithilfe einer Enumeration, die Zugriff auf jeden Eintrag ermöglicht.
  • Für jeden Eintrag, der mit „.txt“, „.pdf“ oder „.docx“ endet, rufen wir seinen InputStream ab.
  • Innerhalb des InputStream-Try-with-Resources-Blocks rufen wir den auf Apache Tika-Parser zum Parsen des Inhalts und Extrahieren des Textes.
  • Der extrahierte Text wird einer Liste zur weiteren Verarbeitung hinzugefügt, z. B. zum Anhängen an einen StringBuffer zur konsolidierten Extraktion.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!