Rumah > Java > javaTutorial > Bagaimana untuk mengekstrak kandungan daripada fail dalam arkib ZIP menggunakan Apache Tika?

Bagaimana untuk mengekstrak kandungan daripada fail dalam arkib ZIP menggunakan Apache Tika?

Susan Sarandon
Lepaskan: 2024-10-29 06:59:02
asal
380 orang telah melayarinya

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

Mengekstrak Kandungan daripada Fail Dalam Zip Menggunakan Apache Tika

Untuk memenuhi keperluan anda membaca dan mengekstrak kandungan daripada fail dalam arkib zip menggunakan Apache Tika, anda perlu membuat beberapa pelarasan pada kod semasa anda. Walaupun pendekatan anda sebahagian besarnya betul, isunya terletak pada mendapatkan InputStream untuk setiap fail dalam zip.

Berikut ialah versi terkini kod anda yang menangani perkara ini:

<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>
Salin selepas log masuk

Dalam semakan ini kod:

  • Kami memulakan instance ZipFile dengan fail zip yang akan diproses.
  • Kami melelang melalui entri fail ZIP menggunakan Enumeration, yang menyediakan akses kepada setiap entri.
  • Untuk setiap entri yang berakhir dengan ".txt", ".pdf", atau ".docx", kami mendapatkan semula InputStreamnya.
  • Dalam blok percubaan-dengan-sumber InputStream, kami menggunakan Penghurai Apache Tika untuk menghuraikan kandungan dan mengekstrak teks.
  • Teks yang diekstrak ditambahkan pada senarai untuk pemprosesan selanjutnya, seperti menambahkan pada StringBuffer untuk pengekstrakan disatukan.

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak kandungan daripada fail dalam arkib ZIP menggunakan Apache Tika?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan