GZipOutputStream হল Java তে gzip কম্প্রেশন ফর্ম্যাটে ডেটা কম্প্রেস করার জন্য ব্যবহৃত একটি ক্লাস। এটি Java API তে java.util.zip প্যাকেজে অন্তর্ভুক্ত এবং এটি GZIP ফাইল তৈরি করতে সহায়ক, যা সাধারণত টেক্সট ফাইল বা অন্যান্য ডেটা কম্প্রেস করতে ব্যবহৃত হয়।
GZipOutputStream ব্যবহার করে ফাইল কম্প্রেস করা খুবই সহজ এবং এটি মূলত FileOutputStream এর সাথে যুক্ত হয়ে কাজ করে। এখানে, আমি একটি উদাহরণ দেখাব যেখানে GZipOutputStream ব্যবহার করে একটি বা একাধিক ফাইলকে gzip ফরম্যাটে কম্প্রেস করা হবে।
GZipOutputStream এর মাধ্যমে ফাইল কম্প্রেস করা:
import java.io.*;
import java.util.zip.*;
public class GZipExample {
public static void main(String[] args) {
String sourceFileName = "example.txt"; // কম্প্রেস করার জন্য ফাইলের নাম
String gzipFileName = "example.txt.gz"; // আউটপুট GZIP ফাইলের নাম
try {
// GZipOutputStream ব্যবহার করে ফাইল কম্প্রেস করা
FileInputStream fis = new FileInputStream(sourceFileName); // ইনপুট ফাইল
FileOutputStream fos = new FileOutputStream(gzipFileName); // আউটপুট ফাইল
GZIPOutputStream gzipOS = new GZIPOutputStream(fos); // GZIPOutputStream তৈরি
byte[] buffer = new byte[1024]; // বাফার তৈরি
int length;
// ইনপুট ফাইল থেকে ডেটা পড়ে এবং কম্প্রেস করা
while ((length = fis.read(buffer)) > 0) {
gzipOS.write(buffer, 0, length); // GZIP আউটপুটে লেখে
}
// স্ট্রিমগুলো বন্ধ করা
fis.close();
gzipOS.finish();
gzipOS.close();
System.out.println("File successfully compressed into " + gzipFileName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- ফাইল স্ট্রিম তৈরি:
FileInputStreamদিয়ে ইনপুট ফাইলটি খোলা হয় এবংFileOutputStreamদিয়ে আউটপুট ফাইল (যেটি GZIP ফাইল হবে) তৈরি করা হয়।
- GZIPOutputStream তৈরি:
GZIPOutputStreamতৈরি করা হয়FileOutputStreamএর সাথে যুক্ত হয়ে, যা গেজিপ ফাইলের আউটপুট হিসেবে কাজ করবে।
- ডেটা কম্প্রেস করা:
FileInputStreamথেকে ফাইলের ডেটা পড়ে, এবং সেই ডেটাGZIPOutputStreamব্যবহার করে কম্প্রেস করা হয়। এখানে একটি বাফার ব্যবহার করা হচ্ছে, যা প্রতি বার ১ কিলোবাইট ডেটা পড়বে এবং কম্প্রেস করবে।
- finish() এবং close():
gzipOS.finish()কল করা হয় GZIP আউটপুট স্ট্রিম সম্পূর্ণ করার জন্য।- অবশেষে, স্ট্রিমগুলো বন্ধ করতে
fis.close()এবংgzipOS.close()ব্যবহার করা হয়।
ফলাফল:
এই কোডটি একটি example.txt.gz নামক GZIP ফাইল তৈরি করবে, যা example.txt ফাইলটি কম্প্রেস করে।
GZipOutputStream এর বৈশিষ্ট্য:
কম্প্রেশন লেভেল:
- GZipOutputStream এ একটি নির্দিষ্ট কম্প্রেশন লেভেল নির্বাচন করা যেতে পারে। এটি Deflater ক্লাসের মাধ্যমে করা হয়, যা নিম্নলিখিত লেভেলগুলির মধ্যে নির্বাচন করতে সক্ষম:
Deflater.NO_COMPRESSION(কম্প্রেশন না করা)Deflater.BEST_SPEED(সর্বোচ্চ গতি)Deflater.BEST_COMPRESSION(সর্বোচ্চ কম্প্রেশন)Deflater.DEFAULT_COMPRESSION(ডিফল্ট কম্প্রেশন)
উদাহরণ:
GZIPOutputStream gzipOS = new GZIPOutputStream(fos, Deflater.BEST_COMPRESSION);- GZipOutputStream এ একটি নির্দিষ্ট কম্প্রেশন লেভেল নির্বাচন করা যেতে পারে। এটি Deflater ক্লাসের মাধ্যমে করা হয়, যা নিম্নলিখিত লেভেলগুলির মধ্যে নির্বাচন করতে সক্ষম:
- GZIP হেডার:
- GZIPOutputStream স্বয়ংক্রিয়ভাবে GZIP হেডার যোগ করে, যা কম্প্রেসড ফাইলের মধ্যে ফাইল মেটাডেটা (যেমন ফাইল নাম, টাইমস্ট্যাম্প) সংরক্ষণ করে।
- ফাইল স্ট্রিম এবং GZIP স্ট্রিম:
- GZIPOutputStream এর ব্যবহার ফাইল স্ট্রিমের উপর ভিত্তি করে, যা ডেটার ইনপুট এবং আউটপুট পরিচালনা করে।
GZipOutputStream ব্যবহার করে Java তে ফাইল কম্প্রেস করা সহজ এবং কার্যকরী। এটি সাধারণত টেক্সট ফাইল এবং অন্যান্য ডেটার জন্য ব্যবহার হয়। যখন বড় ডেটা বা ফাইলের আকার কমানো প্রয়োজন হয়, তখন gzip খুবই জনপ্রিয় এবং কার্যকরী। Java তে GZipOutputStream ফাইল কম্প্রেস করতে আপনাকে উন্নত কম্প্রেশন সুবিধা প্রদান করে, যা স্টোরেজ খরচ এবং ডেটা ট্রান্সফারের সময় কমাতে সাহায্য করে।
Read more