ফাইলকে Zip ফাইলে রূপান্তর করার পদ্ধতি

ZipOutputStream এর মাধ্যমে ফাইল Compress করা - জাভা জিপ (Java Zip) - Java Technologies

348

Java তে একটি ফাইলকে ZIP ফাইলে রূপান্তর করার জন্য java.util.zip প্যাকেজ ব্যবহার করা হয়। এই প্যাকেজের মাধ্যমে ZIP ফাইল তৈরি করা এবং এক বা একাধিক ফাইলকে সেই ZIP ফাইলে সংযুক্ত করা যায়।

এখানে একটি উদাহরণ দেওয়া হলো, যা দেখাবে কিভাবে একটি বা একাধিক ফাইলকে ZIP ফাইলে রূপান্তর করা যায়।

ফাইলকে Zip ফাইলে রূপান্তর করার উদাহরণ

এই উদাহরণে, file1.txt এবং file2.txt নামে দুটি টেক্সট ফাইলকে একটি archive.zip নামে ZIP ফাইলে রূপান্তর করা হবে।

import java.io.*;
import java.util.zip.*;

public class ZipFileExample {

    public static void main(String[] args) {
        // আউটপুট ZIP ফাইলের নাম
        String zipFileName = "archive.zip";
        // যে ফাইলগুলো ZIP ফাইলে যুক্ত হবে
        String[] filesToZip = {"file1.txt", "file2.txt"};

        try {
            // FileOutputStream দিয়ে ZIP ফাইল তৈরি করা
            FileOutputStream fos = new FileOutputStream(zipFileName);
            // ZipOutputStream ব্যবহার করে ZIP আর্কাইভ তৈরি
            ZipOutputStream zos = new ZipOutputStream(fos);

            // প্রতিটি ফাইলের জন্য ZipEntry তৈরি করা
            for (String fileName : filesToZip) {
                File file = new File(fileName);
                FileInputStream fis = new FileInputStream(file);
                ZipEntry zipEntry = new ZipEntry(file.getName());
                zos.putNextEntry(zipEntry);

                // ফাইলের ডেটা ZIP ফাইলে লেখার জন্য buffer ব্যবহার করা
                byte[] buffer = new byte[1024];
                int length;
                while ((length = fis.read(buffer)) >= 0) {
                    zos.write(buffer, 0, length);
                }

                // এন্ট্রি বন্ধ করা
                zos.closeEntry();
                fis.close();
            }

            // ZIP আউটপুট স্ট্রিম বন্ধ করা
            zos.close();
            System.out.println("ZIP file created successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা:

  1. ZipOutputStream:
    • ZipOutputStream একটি আউটপুট স্ট্রিম যা ZIP ফাইল তৈরি করার জন্য ব্যবহৃত হয়।
    • এটি FileOutputStream এর সাথে কাজ করে, যার মাধ্যমে আমরা ZIP ফাইলের উদ্দেশ্যস্থলে ডেটা লিখতে পারি।
  2. ZipEntry:
    • ZipEntry হলো ZIP ফাইলের মধ্যে একটি ফাইলের প্রতিনিধিত্ব। প্রতিটি ফাইলকে ZIP আর্কাইভে এন্ট্রি হিসেবে সংযুক্ত করতে putNextEntry() মেথড ব্যবহার করা হয়।
  3. FileInputStream:
    • প্রতিটি ফাইলের জন্য FileInputStream ব্যবহার করা হয়, যাতে আমরা ফাইলটির ডেটা ZIP ফাইলে লেখার জন্য পড়তে পারি।
  4. Writing the Data:
    • ফাইলের ডেটা পাঠানো হয় buffer (যা 1024 বাইট ধারণ করে) ব্যবহার করে, এবং ZipOutputStream এর মাধ্যমে তা ZIP ফাইলে লেখানো হয়।
  5. Closing the Streams:
    • zos.closeEntry() এবং fis.close() ব্যবহৃত হয় যাতে প্রতিটি ফাইলের লেখার প্রক্রিয়া শেষ হয়ে যায় এবং স্ট্রিমগুলো বন্ধ হয়ে যায়।

বিভিন্ন ফাইল এবং ডিরেক্টরি ZIP ফাইলে যুক্ত করার উদাহরণ

যদি আপনি একাধিক ফাইল এবং ডিরেক্টরি একসাথে ZIP ফাইলে যোগ করতে চান, তাহলে এটি নিম্নরূপভাবে করা যেতে পারে।

import java.io.*;
import java.util.zip.*;

public class ZipDirectoryExample {

    public static void main(String[] args) {
        // আউটপুট ZIP ফাইলের নাম
        String zipFileName = "directory.zip";
        // যে ডিরেক্টরি ZIP ফাইলে যুক্ত করা হবে
        String directoryToZip = "myFolder";

        try {
            // FileOutputStream দিয়ে ZIP ফাইল তৈরি করা
            FileOutputStream fos = new FileOutputStream(zipFileName);
            // ZipOutputStream ব্যবহার করে ZIP আর্কাইভ তৈরি
            ZipOutputStream zos = new ZipOutputStream(fos);

            // ডিরেক্টরির সব ফাইল এবং সাবডিরেক্টরি গুলি রিড করা
            File dir = new File(directoryToZip);
            zipDirectory(dir, dir.getName(), zos);

            // ZIP আউটপুট স্ট্রিম বন্ধ করা
            zos.close();
            System.out.println("Directory ZIP file created successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void zipDirectory(File folder, String parentFolder, ZipOutputStream zos) throws IOException {
        File[] files = folder.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                // যদি এটি একটি ডিরেক্টরি হয়, তবে ZIP এ ডিরেক্টরি এন্ট্রি যুক্ত করুন
                zipDirectory(file, parentFolder + "/" + file.getName(), zos);
            } else {
                // যদি এটি একটি ফাইল হয়, তাহলে ফাইলটি ZIP এ যোগ করুন
                FileInputStream fis = new FileInputStream(file);
                ZipEntry zipEntry = new ZipEntry(parentFolder + "/" + file.getName());
                zos.putNextEntry(zipEntry);

                byte[] buffer = new byte[1024];
                int length;
                while ((length = fis.read(buffer)) >= 0) {
                    zos.write(buffer, 0, length);
                }
                zos.closeEntry();
                fis.close();
            }
        }
    }
}

কোডের ব্যাখ্যা:

  1. ZipEntry with Directory Structure:
    • zipDirectory() মেথডের মাধ্যমে ডিরেক্টরির মধ্যে থাকা সব ফাইল এবং সাবডিরেক্টরিগুলিকে ZIP ফাইলে যুক্ত করা হয়।
    • ZipEntry ব্যবহার করে প্রতিটি ফাইল বা ডিরেক্টরি আর্কাইভে অ্যাড করা হয়।
  2. Recursive Directory Zipping:
    • যদি কোনো ফোল্ডার থাকে, তবে zipDirectory() মেথডটি রিকার্সিভলি কাজ করবে এবং সেই ফোল্ডার এবং তার মধ্যে থাকা সব ফাইল এবং সাবডিরেক্টরি গুলিকে ZIP আর্কাইভে যুক্ত করবে।
  • ZIP ফাইল তৈরি করা Java Zip API এর মাধ্যমে খুবই সহজ এবং কার্যকরী। আপনি ZipOutputStream এবং ZipEntry ব্যবহার করে একাধিক ফাইল এবং ডিরেক্টরি দ্রুত ZIP ফাইলে সংরক্ষণ করতে পারবেন।
  • Java Zip API ফাইল কমপ্রেশন এবং আর্কাইভ তৈরি করার জন্য একটি শক্তিশালী এবং নমনীয় টুলস, যা আপনি আপনার অ্যাপ্লিকেশনের ফাইল পরিচালনা ক্ষমতা বাড়ানোর জন্য ব্যবহার করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...