Maison  >  Article  >  Java  >  Comment lire le contenu de plusieurs types de fichiers dans une archive Zip à l'aide d'Apache Tika ?

Comment lire le contenu de plusieurs types de fichiers dans une archive Zip à l'aide d'Apache Tika ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 21:20:30715parcourir

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

Lecture de contenu à partir de fichiers dans Zip réalisée avec Apache Tika

Défi :

Vous aspirez à écrire un programme Java qui extrait et lit le contenu de plusieurs fichiers dans une archive zip à l'aide d'Apache Tika. Plus précisément, votre fichier zip contient un mélange de fichiers texte, PDF et docx.

Solution :

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());
                    }
                }
            }
        }
    }
}

Explication :

  • Le code parcourt les entrées du fichier zip.
  • Pour chaque entrée, il vérifie le type de fichier et le gère de manière appropriée en fonction de l'extension du fichier.
  • Pour fichiers texte, AutoDetectParser d'Apache Tika est utilisé pour analyser le contenu dans une chaîne.
  • Pour les fichiers PDF, PDFParser est utilisé pour extraire des métadonnées, telles que l'ID du document.
  • Pour les fichiers DOCX, le OOXMLParser est utilisé pour analyser le contenu dans une chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn