


Bagaimanakah saya boleh mengekstrak kandungan daripada fail dalam arkib zip menggunakan Apache Tika dalam Java?
Mengekstrak Kandungan daripada Fail dalam Arkib Zip Menggunakan Apache Tika
Masalah:
Membangunkan program Java yang membaca kandungan fail yang disimpan dalam arkib zip menggunakan Apache Tika. Arkib zip mengandungi pelbagai format fail (seperti txt, pdf dan docx).
Penyelesaian:
Untuk mencapai kefungsian yang diingini, ikut langkah berikut:
-
Hilangkan Arkib Zip:
- Gunakan ZipInputStream untuk mengulangi entri dalam arkib zip.
- Ekstrak sahaja fail yang diminati (cth., txt, pdf, docx).
-
Panggil Apache Tika:
- Buat contoh pengendali teks (cth., BodyContentHandler) untuk menangkap kandungan yang diekstrak.
- Segerakan penghurai (cth., AutoDetectParser) untuk mengenal pasti jenis fail dan menggunakan kaedah penghuraian yang sesuai.
-
Ekstrak dan Tukar Kandungan:
- Hilang setiap fail yang diekstrak melalui penghurai, mengekstrak kandungan ke dalam pengendali teks.
- Tukar sebarang data perduaan atau tidak disokong ke dalam format Rentetan.
-
Satukan Kandungan Ekstrak:
- Simpan kandungan yang diekstrak daripada semua fail ke dalam senarai sementara.
- Gabungkan kandungan fail individu ke dalam satu Rentetan untuk pemprosesan atau paparan selanjutnya.
Coretan Kod (Diubah suai):
<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.ZipInputStream; 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.apache.tika.parser.Parser; import org.apache.tika.sax.BodyContentHandlerFactory; import org.xml.sax.SAXException; public class ImprovedZipExtractor { public static void main(String[] args) { List<String> tempString = new ArrayList<>(); StringBuffer sbf = new StringBuffer(); File file = new File("C:\Users\xxx\Desktop\abc.zip"); InputStream input; try { input = new FileInputStream(file); ZipInputStream zip = new ZipInputStream(input); ZipEntry entry = zip.getNextEntry(); Metadata metadata = new Metadata(); Parser parser = new AutoDetectParser(); while (entry != null) { if (entry.getName().endsWith(".txt") || entry.getName().endsWith(".pdf") || entry.getName().endsWith(".docx")) { System.out.println("entry=" + entry.getName() + " " + entry.getSize()); parser.parse(zip, new BodyContentHandlerFactory(BodyContentHandlerFactory.INCLUDE_ENTITY_ROOT, false).getNewBodyContentHandler(), metadata, new ParseContext()); tempString.add(sbf.toString()); } entry = zip.getNextEntry(); } zip.close(); input.close(); 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()); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (TikaException e) { e.printStackTrace(); } } }</code>
Nota: Adalah penting untuk mengubah suai kod untuk mengelakkan sbf ditimpa semasa setiap lelaran dan mengosongkannya di luar gelung untuk menyimpan gabungan kandungan daripada semua fail.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak kandungan daripada fail dalam arkib zip menggunakan Apache Tika dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Iceberg: Masa Depan Jadual Data Tasik

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?
