ZIP Archives เป็นหนึ่งในรูปแบบไฟล์บีบอัดที่ได้รับความนิยมและใช้กันทั่วไป เหตุผลหลักในการใช้ไฟล์ ZIP คือเพื่อลดขนาดไฟล์ทั้งหมด และส่งหลายไฟล์เป็นไฟล์เก็บถาวรไฟล์เดียว ในฐานะนักพัฒนา คุณสามารถแยกข้อความ รูปภาพ และแม้แต่ข้อมูลเมตาจากไฟล์ที่ถูกบีบอัดภายในไฟล์ ZIP ในบทความนี้ เราจะพูดถึงวิธีการดึงข้อมูล ZIP archives ใน Java

ดึงข้อมูลจากไฟล์ ZIP ในภาษาจาวา

หัวข้อต่อไปนี้ครอบคลุมด้านล่าง:

Java API เพื่อดึงข้อมูลไฟล์ ZIP

GroupDocs.Parser ให้บริการโซลูชันการแยกวิเคราะห์เอกสารสำหรับนักพัฒนา ซึ่งรวมถึง Java API ด้วย ฉันจะใช้ Java API เพื่อแยกข้อมูลไฟล์ ZIP ในตัวอย่างของบทความนี้ นอกจากนี้ API นี้ยังอนุญาตให้ดึงข้อมูลรูปภาพ ข้อความดิบ ข้อความที่มีโครงสร้างและจัดรูปแบบ และข้อมูลเมตาจากรายการ รูปแบบเอกสารที่รองรับ รูปแบบเอกสารเหล่านี้รวมถึงเอกสารประมวลผลคำ, PDF, งานนำเสนอ, สเปรดชีต, อีเมล, ฐานข้อมูล, eBooks และอื่นๆ อีกมากมาย

ดาวน์โหลดหรือกำหนดค่า

คุณสามารถดาวน์โหลดไฟล์ JAR ได้จาก ส่วนการดาวน์โหลด หรือเพียงรับที่เก็บและการกำหนดค่าการพึ่งพาล่าสุดสำหรับ pom.xml ของแอปพลิเคชัน Java ที่ใช้ maven

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

วิธีการแยกข้อมูลไฟล์ ZIP ในภาษาจาวา

หากต้องการแยกข้อมูลจากไฟล์ใดๆ ที่อยู่ในไฟล์เก็บถาวร ก่อนอื่นคุณต้องได้รับไฟล์ที่แนบมาทั้งหมด หลังจากนั้น คุณสามารถดึงข้อมูลประเภทใดก็ได้จากแต่ละไฟล์เพิ่มเติม ขั้นตอนต่อไปนี้แสดงวิธีแยกข้อมูลไฟล์ ZIP และดึงข้อความจากแต่ละไฟล์ที่อยู่ใน Java

  • โหลดไฟล์ ZIP โดยใช้คลาส Parser
  • แยกชุดไฟล์แนบโดยใช้เมธอด getContainer
  • ข้ามสิ่งที่แนบมาสำหรับข้อมูลของแต่ละไฟล์ที่แนบมา
  • คุณสามารถรับข้อมูลประเภทต่างๆ ได้โดยใช้เมธอดของคลาส Parser ตามลำดับ

ซอร์สโค้ดแสดงวิธีแยกข้อมูลไฟล์ ZIP โดยใช้ Java ตัวอย่างด้านล่างจะแยกข้อความทั้งหมดจากไฟล์ทั้งหมดภายในไฟล์ ZIP

// แยกข้อมูลไฟล์เก็บถาวร ZIP ใน Java
Parser parser = new Parser("path/archive.zip");
// แยกไฟล์แนบออกจากคอนเทนเนอร์
Iterable<ContainerItem> attachments = parser.getContainer();

// วนซ้ำการรวบรวมเอนทิตี ZIP
for (ContainerItem item : attachments) {
    // พิมพ์ข้อมูลไฟล์
    System.out.println("-----------------------------------");
    System.out.println("Name: " + item.getName());
    System.out.println("File Size: " + item.getSize() + " Bytes");
    System.out.println("-----------------------------------");

    try {
        Parser attachmentParser = item.openParser();
        TextReader reader = attachmentParser.getText();
        System.out.println(reader == null ? "No text" : reader.readToEnd());
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("Isn't supported.");
    }
}

ผลลัพธ์ของซอร์สโค้ดด้านบนแสดงข้อความที่ดึงมาจากไฟล์ PDF ไฟล์ใดไฟล์หนึ่งภายในไฟล์ ZIP

 -----------------------------------
 Name: sample.pdf
 File Size: 33370 Bytes
 -----------------------------------

 Heading

 This is the first paragraph of the sample document that contains some sample
 text, bulleted list, numbered list and more.

    •  Bullet Item 1
    •  Bullet Item 2
    •  Bullet Item 3
 
 This is the second paragraph of the sample document and after this, there is a
 numbered list: 

    1. Numbered Item 1
    2. Numbered Item 2
    3. Numbered Item 3 

แยกรูปภาพออกจากไฟล์ภายในไฟล์ ZIP ใน Java

ไม่จำกัดเพียงแค่ข้อความ คุณยังสามารถดึงข้อมูลรูปภาพออกมาในทำนองเดียวกันได้ ขั้นตอนต่อไปนี้แสดงวิธีการแยกข้อมูลไฟล์ ZIP และดึงข้อมูลรูปภาพจากไฟล์ที่แนบมาแต่ละไฟล์

  • โหลดไฟล์ ZIP โดยใช้คลาส Parser
  • แยกชุดไฟล์แนบโดยใช้เมธอด getContainer
  • ข้ามสิ่งที่แนบมาเพื่อรับคอลเล็กชันของรูปภาพในแต่ละสิ่งที่แนบมา
  • ตอนนี้สำรวจรูปภาพเพื่อรับข้อมูลของแต่ละรูปภาพโดยใช้คลาส PageImageArea

ซอร์สโค้ดต่อไปนี้แสดงวิธีการแยกข้อมูลรูปภาพจากไฟล์ที่อยู่ในไฟล์ ZIP ใน Java

// แยกข้อมูลรูปภาพออกจากไฟล์ภายในไฟล์ ZIP ใน Java
Parser parser = new Parser("path/archive.zip");
// แยกไฟล์แนบออกจากคอนเทนเนอร์
Iterable<ContainerItem> attachments = parser.getContainer();

// วนซ้ำการรวบรวมเอนทิตี ZIP
for (ContainerItem item : attachments) {
    try {
        Parser attachmentParser = item.openParser();
        Iterable<PageImageArea> images = attachmentParser.getImages();
        if (images != null) {
            int imageCount = 1;
            for (PageImageArea image : images) {
                // พิมพ์ดัชนีหน้า สี่เหลี่ยมผืนผ้า และประเภทรูปภาพ:
                System.out.println(String.format("Image# %d \nPage: %d\nFile Type: %s", imageCount, image.getPage().getIndex()+1, image.getFileType()));
                imageCount++;
            }
        }
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("Isn't supported.");
    }
}
Image# 1 
Page: 1
File Type: JPEG Image (.jpeg) 

รับใบอนุญาต API ฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อใช้ API โดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

กล่าวโดยสรุปคือ คุณได้เรียนรู้วิธีแยกข้อมูล ZIP archives ภายในแอปพลิเคชัน Java ของคุณแล้ว นอกจากนี้ คุณยังสามารถแยกรูปภาพจากไฟล์ ZIP โดยใช้ GroupDocs.Parser for Java เริ่มสร้างแอปพลิเคชัน Java สกัดข้อมูลของคุณสำหรับไฟล์บีบอัด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ API โปรดไปที่ เอกสารประกอบ สำหรับข้อสงสัย ติดต่อเราผ่านทาง ฟอรัม

ดูสิ่งนี้ด้วย