Lưu trữ ZIP là một trong những định dạng tệp nén phổ biến nhất và thường được sử dụng. Lý do chính để sử dụng tệp ZIP là để giảm tổng kích thước tệp và gửi nhiều tệp dưới dạng một tệp lưu trữ. Là nhà phát triển, bạn có thể trích xuất văn bản, hình ảnh và thậm chí cả siêu dữ liệu từ các tệp được nén trong kho lưu trữ ZIP. Trong bài viết này, chúng tôi sẽ thảo luận về cách trích xuất dữ liệu lưu trữ ZIP trong Java.

Trích xuất dữ liệu từ tệp ZIP trong Java

Các chủ đề sau đây được đề cập dưới đây:

API Java để giải nén dữ liệu tệp ZIP

GroupDocs.Parser cung cấp giải pháp phân tích cú pháp tài liệu cho các nhà phát triển, giải pháp này cũng bao gồm API Java. Tôi sẽ sử dụng API Java để giải nén dữ liệu tệp ZIP này trong (các) ví dụ của bài viết này. Ngoài ra, API này cho phép trích xuất dữ liệu hình ảnh, văn bản thô, văn bản có cấu trúc và định dạng cũng như siêu dữ liệu từ một danh sách dài các định dạng tài liệu được hỗ trợ. Các định dạng tài liệu này bao gồm tài liệu soạn thảo văn bản, PDF, bản trình bày, bảng tính, email, cơ sở dữ liệu, sách điện tử và nhiều định dạng khác.

Tải xuống hoặc định cấu hình

Bạn có thể tải xuống tệp JAR từ phần tải xuống hoặc chỉ nhận cấu hình phụ thuộc và kho lưu trữ mới nhất cho tệp pom.xml của các ứng dụng Java dựa trên maven của bạn.

<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>

Cách giải nén dữ liệu tệp ZIP trong Java

Để trích xuất dữ liệu từ bất kỳ tệp nào được đính kèm trong kho lưu trữ, trước tiên bạn cần lấy tất cả các tệp được đính kèm. Sau đó, bạn có thể trích xuất thêm bất kỳ loại dữ liệu nào từ mỗi tệp. Các bước sau đây cho biết cách trích xuất dữ liệu tệp ZIP và truy xuất văn bản từ mỗi tệp đính kèm trong Java.

  • Tải tệp lưu trữ ZIP bằng lớp Parser.
  • Trích xuất tập hợp các tệp đính kèm bằng phương thức getContainer.
  • Duyệt qua các tệp đính kèm để biết dữ liệu của từng tệp đính kèm.
  • Bạn có thể lấy các loại dữ liệu khác nhau bằng cách sử dụng các phương thức tương ứng của lớp Trình phân tích cú pháp.

Mã nguồn cho biết cách trích xuất dữ liệu tệp ZIP bằng Java. Ví dụ dưới đây trích xuất toàn bộ văn bản từ tất cả các tệp trong kho lưu trữ ZIP.

// Trích xuất dữ liệu lưu trữ ZIP trong Java
Parser parser = new Parser("path/archive.zip");
// Trích xuất tệp đính kèm từ vùng chứa
Iterable<ContainerItem> attachments = parser.getContainer();

// Lặp lại bộ sưu tập các thực thể ZIP
for (ContainerItem item : attachments) {
    // In THÔNG TIN TẬP TIN
    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.");
    }
}

Đầu ra của mã nguồn ở trên hiển thị văn bản đã truy xuất của một trong các tệp PDF trong tệp 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 

Trích xuất hình ảnh từ tệp trong tệp ZIP trong Java

Không chỉ giới hạn ở văn bản, bạn cũng có thể trích xuất thông tin hình ảnh theo cách tương tự. Các bước sau đây cho biết cách giải nén dữ liệu tệp ZIP và truy xuất thông tin hình ảnh từ mỗi tệp đính kèm.

  • Tải tệp lưu trữ ZIP bằng lớp Parser.
  • Trích xuất tập hợp các tệp đính kèm bằng phương thức getContainer.
  • Duyệt qua các tệp đính kèm để lấy bộ sưu tập hình ảnh trong mỗi tệp đính kèm.
  • Bây giờ duyệt qua các hình ảnh để lấy thông tin của từng hình ảnh bằng cách sử dụng lớp PageImageArea.

Mã nguồn sau đây cho biết cách trích xuất dữ liệu hình ảnh từ các tệp được đính kèm trong tệp ZIP trong Java.

// Trích xuất thông tin hình ảnh từ tệp trong kho lưu trữ ZIP trong Java
Parser parser = new Parser("path/archive.zip");
// Trích xuất tệp đính kèm từ vùng chứa
Iterable<ContainerItem> attachments = parser.getContainer();

// Lặp lại bộ sưu tập các thực thể 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) {
                // In chỉ mục trang, hình chữ nhật và loại hình ảnh:
                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) 

Nhận giấy phép API miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng API mà không bị giới hạn đánh giá.

Sự kết luận

Tóm lại, bạn đã học cách trích xuất dữ liệu lưu trữ ZIP trong các ứng dụng Java của mình. Ngoài ra, bạn cũng có thể trích xuất hình ảnh từ các tệp ZIP bằng GroupDocs.Parser for Java. Bắt đầu xây dựng ứng dụng Java trích xuất dữ liệu của bạn cho các tệp nén. Để tìm hiểu thêm về API, hãy truy cập tài liệu. Nếu có thắc mắc, hãy liên hệ với chúng tôi qua diễn đàn.

Xem thêm