উদাহরণ সহ File Compression এবং Decompression

File Compression এবং Decompression (ZipInputStream এবং ZipOutputStream) - জাভা টাপল (Java Tuples) - Java Technologies

327

ফাইল কমপ্রেশন (Compression) এবং ডিকমপ্রেশন (Decompression) হল এমন একটি প্রক্রিয়া যার মাধ্যমে ফাইলের আকার ছোট করা হয় এবং পরবর্তীতে মূল অবস্থায় ফিরে আনা হয়। Java-তে এই কাজগুলি করতে সাধারণত java.util.zip প্যাকেজ ব্যবহার করা হয়, যা gzip, zip এবং অন্যান্য ফাইল ফরম্যাটের সাথে কাজ করতে সহায়ক।

ফাইল কমপ্রেশন এবং ডিকমপ্রেশন প্রক্রিয়া সরাসরি Java Streams এবং Java NIO এর সাথে যুক্ত থাকে। এটি মূলত FileInputStream এবং FileOutputStream এর সাথে কাজ করে, তবে ডেটা কমপ্রেশন বা ডিকমপ্রেশন করার জন্য ZipOutputStream, ZipInputStream, GZIPOutputStream, এবং GZIPInputStream ব্যবহার করা হয়।


Java-তে File Compression এবং Decompression উদাহরণ

১. GZIP Compression এবং Decompression

Java তে GZIP ফাইল কমপ্রেশন এবং ডিকমপ্রেশন করার জন্য GZIPOutputStream এবং GZIPInputStream ক্লাস ব্যবহৃত হয়। এগুলি gzip ফরম্যাটে ফাইল কমপ্রেস এবং ডিকমপ্রেস করতে ব্যবহৃত হয়।


ফাইল কমপ্রেশন উদাহরণ (GZIP)

এই উদাহরণে, একটি সাধারণ টেক্সট ফাইল কমপ্রেস করা হবে GZIP ফরম্যাটে।

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;

public class GzipCompressionExample {
    public static void main(String[] args) {
        // ফাইল কমপ্রেস করার জন্য GZIPOutputStream ব্যবহার করা
        try (FileInputStream fis = new FileInputStream("input.txt");
             FileOutputStream fos = new FileOutputStream("output.gz");
             GZIPOutputStream gzipOS = new GZIPOutputStream(fos)) {
             
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                gzipOS.write(buffer, 0, length); // ফাইল কমপ্রেস করা
            }
            System.out.println("File successfully compressed using GZIP.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • GZIPOutputStream ক্লাস ফাইল কমপ্রেস করার জন্য ব্যবহৃত হচ্ছে।
  • input.txt ফাইলটি GZIP ফরম্যাটে output.gz ফাইলে কমপ্রেস করা হচ্ছে।

ফাইল ডিকমপ্রেশন উদাহরণ (GZIP)

এখন, GZIP ফাইল ডিকমপ্রেস করা হবে, যা আগে কমপ্রেস করা ছিল।

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;

public class GzipDecompressionExample {
    public static void main(String[] args) {
        // GZIP ফাইল ডিকমপ্রেস করার জন্য GZIPInputStream ব্যবহার করা
        try (FileInputStream fis = new FileInputStream("output.gz");
             GZIPInputStream gzipIS = new GZIPInputStream(fis);
             FileOutputStream fos = new FileOutputStream("decompressed.txt")) {
             
            byte[] buffer = new byte[1024];
            int length;
            while ((length = gzipIS.read(buffer)) > 0) {
                fos.write(buffer, 0, length); // ফাইল ডিকমপ্রেস করা
            }
            System.out.println("File successfully decompressed.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • GZIPInputStream ক্লাস ফাইল ডিকমপ্রেস করার জন্য ব্যবহৃত হচ্ছে।
  • output.gz ফাইলটি decompressed.txt নামে ডিকমপ্রেস করা হচ্ছে।

২. Zip Compression এবং Decompression

ZipOutputStream এবং ZipInputStream ব্যবহার করে একাধিক ফাইল একটি ZIP ফাইলে কমপ্রেস করা যায় এবং পরে সেই ZIP ফাইল ডিকমপ্রেস করা যায়।


ফাইল কমপ্রেশন উদাহরণ (ZIP)

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipCompressionExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("compressed.zip");
             ZipOutputStream zipOS = new ZipOutputStream(fos)) {

            // ফাইলের নাম এবং ডেটা সহ ZipEntry তৈরি
            ZipEntry entry = new ZipEntry("input.txt");
            zipOS.putNextEntry(entry);

            try (FileInputStream fis = new FileInputStream("input.txt")) {
                byte[] buffer = new byte[1024];
                int length;
                while ((length = fis.read(buffer)) > 0) {
                    zipOS.write(buffer, 0, length);  // ফাইল কমপ্রেস করা
                }
            }

            zipOS.closeEntry();
            System.out.println("File successfully compressed to ZIP.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ZipOutputStream ব্যবহার করে input.txt ফাইলটি compressed.zip নামক ZIP ফাইলে কমপ্রেস করা হচ্ছে।
  • ZipEntry ব্যবহার করে ফাইলের অন্তর্ভুক্তি (entry) তৈরি করা হচ্ছে ZIP ফাইলে।

ফাইল ডিকমপ্রেশন উদাহরণ (ZIP)

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipDecompressionExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("compressed.zip");
             ZipInputStream zipIS = new ZipInputStream(fis)) {

            ZipEntry entry;
            while ((entry = zipIS.getNextEntry()) != null) {
                System.out.println("Unzipping: " + entry.getName());
                try (FileOutputStream fos = new FileOutputStream(entry.getName())) {
                    byte[] buffer = new byte[1024];
                    int length;
                    while ((length = zipIS.read(buffer)) > 0) {
                        fos.write(buffer, 0, length);  // ফাইল ডিকমপ্রেস করা
                    }
                }
                zipIS.closeEntry();
            }

            System.out.println("File successfully decompressed from ZIP.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ZipInputStream ব্যবহার করে compressed.zip ফাইলের ডেটা পড়া হচ্ছে এবং তার মধ্যে থাকা input.txt ফাইলটি ডিকমপ্রেস করা হচ্ছে।

  • File Compression এবং Decompression হল এমন প্রক্রিয়া যা ডেটার আকার কমিয়ে দেয় এবং পরে এটি মূল অবস্থায় ফিরিয়ে আনে।
  • Java I/O API থেকে GZIPOutputStreamZipOutputStream ব্যবহার করে আপনি ফাইল কমপ্রেস করতে পারেন, এবং GZIPInputStreamZipInputStream ব্যবহার করে সেই ফাইল ডিকমপ্রেস করতে পারেন।
  • Java Streams এবং NIO লাইব্রেরি ব্যবহার করে আরও উন্নত এবং কার্যকরী ফাইল কমপ্রেশন এবং ডিকমপ্রেশন প্রক্রিয়া বাস্তবায়ন করা সম্ভব।
Content added By
Promotion

Are you sure to start over?

Loading...