ফাইল Compress এবং Decompress করা (ZIP, GZIP)

Java Technologies - অ্যাপাচি কমন্স আইও (Apache Common IO) Apache Commons IO এর মাধ্যমে File Compression |
154
154

Apache Commons IO লাইব্রেরি ফাইল কমপ্রেস (Compress) এবং ডিকমপ্রেস (Decompress) করার জন্য শক্তিশালী ফিচার প্রদান করে। আপনি সহজেই ZIP এবং GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করতে পারেন Commons Compress লাইব্রেরির মাধ্যমে, যা Apache Commons IO এর একটি অংশ। এতে ফাইলের সাইজ ছোট করার জন্য কমপ্রেস করা এবং প্রয়োজনের সময় ফাইলের কনটেন্ট বের করার জন্য ডিকমপ্রেস করা সহজ হয়ে যায়।

এখানে আমরা দেখব ZIP এবং GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করার উদাহরণ।

1. ZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করা

ZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করার জন্য আমরা Apache Commons Compress লাইব্রেরি ব্যবহার করতে পারি। এটি ZipFile, ZipOutputStream, এবং অন্যান্য ক্লাস সরবরাহ করে যা আপনাকে ZIP ফাইল তৈরি এবং খুলতে সাহায্য করে।

1.1 ZIP ফাইল কমপ্রেস করা

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

উদাহরণ: ZIP ফাইল কমপ্রেস করা

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipFileCompressExample {
    public static void main(String[] args) {
        File sourceFile = new File("example.txt");
        File zipFile = new File("example.zip");

        try (FileOutputStream fos = new FileOutputStream(zipFile);
             ZipOutputStream zipOut = new ZipOutputStream(fos);
             FileInputStream fis = new FileInputStream(sourceFile)) {

            // ZIP ফাইল তৈরি করা এবং ফাইল যোগ করা
            ZipEntry zipEntry = new ZipEntry(sourceFile.getName());
            zipOut.putNextEntry(zipEntry);

            // ফাইল কনটেন্ট যোগ করা
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                zipOut.write(buffer, 0, length);
            }

            System.out.println("File compressed successfully into ZIP!");

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

আউটপুট:

File compressed successfully into ZIP!

এখানে:

  • ZipOutputStream ব্যবহার করে example.txt ফাইলটি example.zip ফাইল আকারে কমপ্রেস করা হয়েছে।
  • ZipEntry হল সেই ফাইলটি যা ZIP আর্কাইভে যুক্ত করা হচ্ছে।

1.2 ZIP ফাইল ডিকমপ্রেস করা

একটি ZIP ফাইলের কনটেন্ট পড়তে ZipFile ক্লাস ব্যবহার করা হয়। এটি ZIP ফাইল থেকে নির্দিষ্ট ফাইল বের করতে সাহায্য করে।

উদাহরণ: ZIP ফাইল ডিকমপ্রেস করা

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

public class ZipFileDecompressExample {
    public static void main(String[] args) {
        File zipFile = new File("example.zip");
        File outputDir = new File("outputDir");

        try (ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFile))) {
            ZipEntry entry;
            while ((entry = zipIn.getNextEntry()) != null) {
                File outputFile = new File(outputDir, entry.getName());
                try (FileOutputStream fos = new FileOutputStream(outputFile)) {
                    byte[] buffer = new byte[1024];
                    int length;
                    while ((length = zipIn.read(buffer)) > 0) {
                        fos.write(buffer, 0, length);
                    }
                }
                zipIn.closeEntry();
            }
            System.out.println("ZIP file extracted successfully!");

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

আউটপুট:

ZIP file extracted successfully!

এখানে:

  • ZipInputStream ব্যবহার করে example.zip ফাইল থেকে ফাইলগুলি বের করা হয়েছে এবং outputDir ডিরেক্টরিতে রাখা হয়েছে।

2. GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করা

GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করার জন্য আমরা GZIPOutputStream এবং GZIPInputStream ব্যবহার করি।

2.1 GZIP ফাইল কমপ্রেস করা

GZIP ফাইল কমপ্রেস করতে GZIPOutputStream ক্লাস ব্যবহার করা হয়।

উদাহরণ: GZIP ফাইল কমপ্রেস করা

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

public class GzipCompressExample {
    public static void main(String[] args) {
        File sourceFile = new File("example.txt");
        File gzippedFile = new File("example.txt.gz");

        try (FileInputStream fis = new FileInputStream(sourceFile);
             FileOutputStream fos = new FileOutputStream(gzippedFile);
             GZIPOutputStream gzipOut = new GZIPOutputStream(fos)) {

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

            System.out.println("File compressed successfully into GZIP!");

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

আউটপুট:

File compressed successfully into GZIP!

এখানে:

  • GZIPOutputStream ব্যবহার করে example.txt ফাইলটি example.txt.gz ফাইল আকারে GZIP কমপ্রেস করা হয়েছে।

2.2 GZIP ফাইল ডিকমপ্রেস করা

GZIP ফাইল থেকে ডেটা পড়তে GZIPInputStream ব্যবহার করা হয়।

উদাহরণ: GZIP ফাইল ডিকমপ্রেস করা

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.util.zip.GZIPInputStream;

public class GzipDecompressExample {
    public static void main(String[] args) {
        File gzippedFile = new File("example.txt.gz");
        File outputFile = new File("output_example.txt");

        try (GZIPInputStream gzipIn = new GZIPInputStream(new FileInputStream(gzippedFile));
             FileOutputStream fos = new FileOutputStream(outputFile);
             BufferedReader reader = new BufferedReader(new InputStreamReader(gzipIn))) {

            String line;
            while ((line = reader.readLine()) != null) {
                fos.write(line.getBytes());
                fos.write("\n".getBytes());
            }

            System.out.println("GZIP file decompressed successfully!");

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

আউটপুট:

GZIP file decompressed successfully!

এখানে:

  • GZIPInputStream ব্যবহার করে example.txt.gz ফাইলটি ডিকমপ্রেস করা হয়েছে এবং তার কনটেন্ট output_example.txt ফাইলে সংরক্ষণ করা হয়েছে।

3. সারাংশ

  • ZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস: ZipOutputStream এবং ZipInputStream ব্যবহার করে আপনি খুব সহজেই ZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করতে পারেন।
  • GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস: GZIPOutputStream এবং GZIPInputStream ব্যবহার করে আপনি GZIP ফাইল কমপ্রেস এবং ডিকমপ্রেস করতে পারেন।
  • Apache Commons IO লাইব্রেরি compress এবং decompress ফাইল করার জন্য সহজ এবং কার্যকরী মেথড সরবরাহ করে, যা ZIP এবং GZIP ফাইল ফরম্যাটের জন্য খুবই উপকারী।

এই উপায়গুলির মাধ্যমে আপনি Apache Commons IO লাইব্রেরি ব্যবহার করে ফাইল কমপ্রেস এবং ডিকমপ্রেস করার কাজ দ্রুত এবং সহজে করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion