ホームページ  >  記事  >  Java  >  Apache Tika を使用して、Zip アーカイブ内の複数のファイル タイプからコンテンツを読み取るにはどうすればよいですか?

Apache Tika を使用して、Zip アーカイブ内の複数のファイル タイプからコンテンツを読み取るにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 21:20:30715ブラウズ

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

Apache Tika で ZIP 内のファイルからコンテンツを読み取る

課題:

あなたは、次のような Java プログラムを作成したいと考えています。 Apache Tika を使用して、zip アーカイブ内の複数のファイルのコンテンツを抽出して読み取ります。具体的には、zip ファイルにはテキスト、PDF、docx ファイルが混在しています。

解決策:

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

説明:

  • コードは、zip ファイル内のエントリを反復処理します。
  • エントリごとに、ファイルの種類をチェックし、ファイル拡張子に基づいて適切に処理します。
  • テキスト ファイルの場合、Apache Tika の AutoDetectParser を使用してコンテンツを文字列に解析します。
  • PDF ファイルの場合、PDFParser はドキュメント ID などのメタデータを抽出するために使用されます。
  • DOCX ファイルの場合、 OOXMLParser は、コンテンツを文字列に解析するために使用されます。

以上がApache Tika を使用して、Zip アーカイブ内の複数のファイル タイプからコンテンツを読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。