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

File Compression এবং Decompression (ZipInputStream এবং ZipOutputStream) - জাভা আইও (Java.io Package) - Java Technologies

327

File Compression এবং Decompression ফাইল আকার ছোট করার জন্য ব্যবহৃত হয়, যাতে সংরক্ষণ এবং ট্রান্সফার আরও কার্যকরী হয়। Java-তে ZIP ফাইল ফরম্যাটে Compression এবং Decompression করতে ZipInputStream এবং ZipOutputStream ক্লাস ব্যবহার করা হয়।

এই ক্লাস দুটি Java I/O প্যাকেজের অংশ এবং Zip ফাইল ফরম্যাটে ডেটা পড়া এবং লেখা করার জন্য ব্যবহৃত হয়। ZipOutputStream ব্যবহার করে ফাইল কম্প্রেস করা যায় এবং ZipInputStream ব্যবহার করে কম্প্রেস করা ফাইল ডি-কম্প্রেস করা যায়।


File Compression এবং Decompression এর জন্য ZipInputStream এবং ZipOutputStream:

  1. ZipOutputStream:
    • ফাইল বা ডেটা স্ট্রিমকে ZIP ফরম্যাটে কম্প্রেস করতে ব্যবহৃত হয়।
  2. ZipInputStream:
    • ZIP ফরম্যাটে কম্প্রেস করা ফাইল বা ডেটা স্ট্রিমকে ডি-কম্প্রেস করতে ব্যবহৃত হয়।

এখানে ZipOutputStream এবং ZipInputStream ব্যবহার করে ফাইল কম্প্রেস এবং ডি-কম্প্রেস করার উদাহরণ দেখানো হয়েছে।


File Compression উদাহরণ (ZipOutputStream):

এটি একটি ফাইল কম্প্রেস করার উদাহরণ যেখানে ZipOutputStream ব্যবহার করা হয়েছে।

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

public class FileCompressionExample {
    public static void main(String[] args) {
        String sourceFile = "example.txt";  // কম্প্রেস করার ফাইল
        String zipFile = "example.zip";     // আউটপুট ZIP ফাইল

        try (FileInputStream fis = new FileInputStream(sourceFile);
             ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
            
            // ZIP এ একটি নতুন এন্ট্রি (ফাইল) তৈরি করা
            ZipEntry zipEntry = new ZipEntry("example.txt");
            zos.putNextEntry(zipEntry);

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

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

            System.out.println("File has been compressed successfully into " + zipFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • FileInputStream ব্যবহার করে example.txt ফাইল থেকে ডেটা পড়া হচ্ছে।
  • ZipOutputStream ব্যবহার করে example.zip ফাইলে ডেটা কম্প্রেস করা হচ্ছে।
  • ZipEntry একটি ZIP ফাইলের এন্ট্রি, যা ফাইলের নাম এবং কন্টেন্ট ধারণ করে।
  • zos.write() মেথডের মাধ্যমে ফাইলের ডেটা ZIP ফাইলে লেখা হচ্ছে।

আউটপুট:

File has been compressed successfully into example.zip

এখন example.txt ফাইলটি example.zip নামে কম্প্রেস হয়ে যাবে।


File Decompression উদাহরণ (ZipInputStream):

এটি একটি ZIP ফাইল থেকে ডেটা ডি-কম্প্রেস করার উদাহরণ যেখানে ZipInputStream ব্যবহার করা হয়েছে।

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

public class FileDecompressionExample {
    public static void main(String[] args) {
        String zipFile = "example.zip";    // কম্প্রেস করা ZIP ফাইল
        String outputFile = "example_decompressed.txt";  // ডি-কম্প্রেস করা ফাইল

        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));
             FileOutputStream fos = new FileOutputStream(outputFile)) {

            ZipEntry zipEntry = zis.getNextEntry();  // ZIP ফাইলের প্রথম এন্ট্রি পড়া

            if (zipEntry != null) {
                byte[] buffer = new byte[1024];
                int length;
                while ((length = zis.read(buffer)) > 0) {
                    fos.write(buffer, 0, length);  // ডেটা আউটপুট ফাইলে লেখা
                }
                zis.closeEntry();
                System.out.println("File has been decompressed successfully into " + outputFile);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ZipInputStream ব্যবহার করে example.zip ফাইল থেকে ডেটা পড়া হচ্ছে।
  • FileOutputStream ব্যবহার করে example_decompressed.txt ফাইলে ডেটা লেখা হচ্ছে।
  • getNextEntry() মেথড দ্বারা ZIP ফাইলের প্রথম এন্ট্রি (ফাইল) পড়া হচ্ছে।
  • zis.read() মেথড ব্যবহার করে ZIP ফাইল থেকে ডেটা পড়া হচ্ছে এবং fos.write() এর মাধ্যমে ডেটা আউটপুট ফাইলে লেখা হচ্ছে।

আউটপুট:

File has been decompressed successfully into example_decompressed.txt

এখন example.zip ফাইলটি ডি-কম্প্রেস হয়ে example_decompressed.txt ফাইলে রূপান্তরিত হবে।


File Compression এবং Decompression এর জন্য ZipInputStream এবং ZipOutputStream এর সুবিধা:

  1. ফাইলের আকার ছোট করা (Compression):
    • ফাইল কম্প্রেস করার মাধ্যমে আপনার ডেটা সঞ্চয় এবং ট্রান্সফার সহজ এবং দ্রুত হয়।
  2. Multiple Files Handling:
    • ZipOutputStream এবং ZipInputStream একাধিক ফাইলকে ZIP ফাইলের মধ্যে একত্রিত করতে পারে, যা ডেটা স্টোরেজ এবং স্থান সংরক্ষণে সহায়ক।
  3. Cross-Platform Compatibility:
    • ZIP ফরম্যাটটি বহুল ব্যবহৃত একটি স্ট্যান্ডার্ড ফরম্যাট, যা বিভিন্ন প্ল্যাটফর্মে সহায়ক এবং সহজে ব্যবহারযোগ্য।
  4. Stream-based Processing:
    • ZipInputStream এবং ZipOutputStream স্ট্রীম ভিত্তিক প্রক্রিয়া, যা বড় ফাইলের সাথে কাজ করার সময় memory efficiency বজায় রাখে।

File Compression এবং Decompression এর সীমাবদ্ধতা:

  1. Compression Time:
    • ফাইল কম্প্রেস করার সময় কিছু পরিমাণ প্রসেসিং সময় লাগে, যা কিছু ক্ষেত্রে পারফরম্যান্সের উপর প্রভাব ফেলতে পারে।
  2. File Integrity:
    • যদি ZIP ফাইলটি ক্ষতিগ্রস্ত হয়, তবে এর মধ্যে থাকা সমস্ত ফাইলগুলো অ্যাক্সেস করা সম্ভব হবে না। এজন্য সঠিকভাবে ফাইল তৈরি এবং ডি-কম্প্রেস করা গুরুত্বপূর্ণ।

  • ZipInputStream এবং ZipOutputStream Java I/O প্যাকেজের শক্তিশালী ক্লাস যা ফাইল কম্প্রেস এবং ডি-কম্প্রেস করার জন্য ব্যবহৃত হয়।
  • ZipOutputStream ব্যবহার করে আপনি ফাইল কম্প্রেস করতে পারেন এবং ZipInputStream ব্যবহার করে সেই কম্প্রেস করা ফাইলটি ডি-কম্প্রেস করতে পারেন।
  • এই ক্লাসগুলির মাধ্যমে আপনি multiple files একত্রিত করতে পারেন এবং কম্প্রেস করে সংরক্ষণ করতে পারেন, যা স্থান সঞ্চয়ে সহায়ক।
Content added By
Promotion

Are you sure to start over?

Loading...