Giải nén RAR trong Java

Các tệp RAR thường được sử dụng để nén lượng dữ liệu lớn thành một tệp nhỏ hơn. Tuy nhiên, việc trích xuất các tệp này theo chương trình trong Java có thể là một thách thức nếu không có các công cụ phù hợp. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn hai phương pháp để trích xuất các tệp RAR bằng Java: một phương pháp cho các tệp RAR thông thường và một phương pháp khác cho các tệp RAR được mã hóa.

Giải nén các tập tin RAR - Cấu hình API Java

Để giải nén các tệp rar trong Java, bạn cần cài đặt Conholdate.Total cho Java trong khi tải xuống tệp JAR hoặc chạy lệnh Maven sau trong tệp pom.xml của dự án của bạn:

<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.8</version>
<type>pom</type>
</dependency>

Giải nén các tập tin RAR trong Java

Khi giải nén một tệp RAR thông thường, quy trình bao gồm mở tệp lưu trữ, truy cập các mục nhập riêng lẻ và lưu dữ liệu đã giải nén vào vị trí mong muốn. Phân tích từng bước dưới đây minh họa cách giải nén mục nhập tệp đầu tiên từ tệp lưu trữ RAR và lưu vào tệp. Phương pháp này hữu ích để xử lý các tệp lưu trữ RAR chuẩn.

  • Tải tệp RAR nguồn bằng lớp RarArchive.

  • Trích xuất một kho lưu trữ từ tệp nguồn.

  • Xuất file đã giải nén vào đĩa.

Đoạn mã sau đây cho thấy cách xử lý việc đọc và ghi tệp bằng các luồng, đảm bảo rằng mỗi mục được trích xuất đúng cách thành các phần nhỏ để tránh quá tải bộ nhớ, đặc biệt là khi làm việc với các tệp lớn.

try (com.aspose.zip.RarArchive archive = new com.aspose.zip.RarArchive("archive.rar")) {
    try (FileOutputStream destination = new FileOutputStream(dataDir + "firstEntry.txt")) {
        try (InputStream source = archive.getEntries().get(0).open()) {
            byte[] b = new byte[1024];
            int bytesRead;
            while (0 < (bytesRead = source.read(b, 0, b.length))) {
                destination.write(b, 0, bytesRead);
            }
        }
    }
} catch (IOException ex) {
    System.out.println(ex);
}

Hơn nữa, bạn có thể cải thiện đoạn mã này hơn nữa để lặp lại từng mục nhập và xuất từng mục đó vào tệp tương ứng theo yêu cầu của bạn.

Giải nén các tệp RAR được mã hóa trong Java

Khi xử lý các tệp RAR được bảo vệ bằng mật khẩu hoặc được mã hóa, quy trình trích xuất hơi khác một chút. Bạn cần cung cấp mật khẩu chính xác để trích xuất thành công các tệp. Các bước sau đây tóm tắt quy trình trích xuất các tệp RAR được mã hóa và được bảo vệ bằng mật khẩu trong Java:

  • Tệp RAR được mã hóa đầu vào được tải bằng lớp RarArchive.

  • Cung cấp mật khẩu chính xác để trích xuất mục nhập tập tin đầu tiên.

  • Dữ liệu được trích xuất sẽ được lưu với tên tệp đã chỉ định.

Mẫu mã sau đây minh họa cách trích xuất tệp RAR được mã hóa và bảo vệ bằng mật khẩu bằng Java:

File fi = new File("encrypted.rar");
try (com.aspose.zip.RarArchive archive = new com.aspose.zip.RarArchive(Files.newInputStream(fi.toPath()))) {
    try (FileOutputStream destination = new FileOutputStream(dataDir + "firstEntry.txt")) {
        archive.getEntries().get(0).extract(destination, "p@s$w0rd");
    }
} catch (IOException ex) {
    System.out.println(ex);
}

Giấy phép đánh giá miễn phí

Bạn có thể yêu cầu giấy phép tạm thời miễn phí để đánh giá tính năng nén dữ liệu và thao tác di chuyển này cũng như các tính năng khác mà không có bất kỳ giới hạn đánh giá nào.

Tóm tắt

Trích xuất các tệp RAR trong Java, dù là tiêu chuẩn hay được mã hóa, là một nhiệm vụ đơn giản với phương pháp này. Nó cung cấp các cách hiệu quả và linh hoạt để xử lý nhiều kho lưu trữ RAR, bao gồm cả các kho lưu trữ được bảo vệ bằng mật khẩu. Bạn có thể dễ dàng tích hợp chức năng trích xuất RAR vào các ứng dụng Java của mình, cho phép bạn quản lý dữ liệu đã nén một cách liền mạch. Nếu bạn có bất kỳ câu hỏi nào, vui lòng viết thư cho chúng tôi tại diễn đàn.

Xem thêm