Java I/O প্যাকেজের ZipInputStream এবং ZipOutputStream ক্লাসগুলি ব্যবহার করে আপনি ফাইল কম্প্রেশন এবং ডি-কম্প্রেশন করতে পারেন, অর্থাৎ ফাইল আর্কাইভ করা এবং বের করা। Zip ফাইলগুলি সাধারণত একাধিক ফাইল বা ডিরেক্টরি সংরক্ষণ করতে ব্যবহৃত হয় এবং এগুলির আকার ছোট করে দেয়, যা সংরক্ষণ এবং ট্রান্সফারকে আরও সহজ করে তোলে।
ফাইল কম্প্রেশন এবং ডি-কম্প্রেশন করার জন্য ZipInputStream এবং ZipOutputStream দুটি ক্লাস ব্যবহার করা হয়। এগুলি Zip ফাইল তৈরি করা, ফাইলের ডেটা কম্প্রেস করা এবং সেই ফাইল থেকে ডেটা বের করার জন্য ব্যবহৃত হয়।
ZipInputStream এবং ZipOutputStream এর ব্যবহার
ZipOutputStream: এটি Zip ফাইল তৈরি এবং ফাইলগুলিকে কম্প্রেস করার জন্য ব্যবহৃত হয়।ZipInputStream: এটি Zip ফাইল থেকে ডেটা ডি-কম্প্রেস করার জন্য ব্যবহৃত হয়।
ZipOutputStream (ফাইল কম্প্রেস করা)
ZipOutputStream ব্যবহার করে একটি ফাইল বা একাধিক ফাইলকে Zip ফাইলে কম্প্রেস করা যায়। এটি সাধারণত FileOutputStream এর সাথে যুক্ত থাকে এবং ZipEntry ব্যবহার করে বিভিন্ন ফাইলের ডেটা ফাইলে যুক্ত করা হয়।
ZipOutputStream দিয়ে ফাইল কম্প্রেস করার উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class ZipCompressionExample {
public static void main(String[] args) {
try {
// ZipOutputStream দিয়ে একটি নতুন Zip ফাইল তৈরি করা
FileOutputStream fos = new FileOutputStream("archive.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// প্রথম ফাইলের জন্য ZipEntry তৈরি করা
ZipEntry entry1 = new ZipEntry("file1.txt");
zos.putNextEntry(entry1);
// ফাইল থেকে ডেটা পড়ে Zip ফাইলে লেখা
FileInputStream fis1 = new FileInputStream("file1.txt");
byte[] buffer1 = new byte[1024];
int length1;
while ((length1 = fis1.read(buffer1)) > 0) {
zos.write(buffer1, 0, length1);
}
zos.closeEntry(); // প্রথম ফাইলটি বন্ধ করা
// দ্বিতীয় ফাইলের জন্য ZipEntry তৈরি করা
ZipEntry entry2 = new ZipEntry("file2.txt");
zos.putNextEntry(entry2);
// দ্বিতীয় ফাইলের ডেটা পড়ে Zip ফাইলে লেখা
FileInputStream fis2 = new FileInputStream("file2.txt");
byte[] buffer2 = new byte[1024];
int length2;
while ((length2 = fis2.read(buffer2)) > 0) {
zos.write(buffer2, 0, length2);
}
zos.closeEntry(); // দ্বিতীয় ফাইলটি বন্ধ করা
// ZipOutputStream বন্ধ করা
zos.close();
System.out.println("Files successfully compressed into archive.zip");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- ZipOutputStream ব্যবহার করে দুটি ফাইল file1.txt এবং file2.txt একটি Zip ফাইলে কম্প্রেস করা হচ্ছে।
- ZipEntry ব্যবহার করে প্রতিটি ফাইলের জন্য পৃথক entry তৈরি করা হয়েছে এবং সেগুলি
putNextEntry()মেথড দ্বারা ফাইলে যুক্ত করা হয়েছে। - FileInputStream এর মাধ্যমে ফাইল থেকে ডেটা পড়ে ZipOutputStream এর মাধ্যমে কম্প্রেস করা হচ্ছে।
আউটপুট:
Files successfully compressed into archive.zip
ZipInputStream (ফাইল ডি-কম্প্রেস করা)
ZipInputStream ক্লাস ব্যবহার করে একটি Zip ফাইল থেকে ডেটা বের করা যায়, যা কম্প্রেস করা থাকে। এটি FileInputStream এর সাথে কাজ করে এবং ZipEntry ব্যবহার করে ফাইলের প্রতিটি এন্ট্রি থেকে ডেটা পড়া হয়।
ZipInputStream দিয়ে ফাইল ডি-কম্প্রেস করার উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class ZipDecompressionExample {
public static void main(String[] args) {
try {
// ZipInputStream দিয়ে Zip ফাইলটি খুলা
FileInputStream fis = new FileInputStream("archive.zip");
ZipInputStream zis = new ZipInputStream(fis);
// ZipEntry দিয়ে ফাইলগুলোর নাম পেতে থাকুন
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
System.out.println("Extracting: " + entry.getName());
// ফাইলের ডেটা পড়ে ডিস্কে লিখা
FileOutputStream fos = new FileOutputStream(entry.getName());
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fos.close();
zis.closeEntry();
}
// ZipInputStream বন্ধ করা
zis.close();
System.out.println("Files successfully extracted.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- ZipInputStream ব্যবহার করে archive.zip ফাইল থেকে ডেটা বের করা হচ্ছে।
- getNextEntry() মেথড ব্যবহার করে Zip ফাইলের প্রতিটি entry পড়া হচ্ছে।
- প্রতিটি ZipEntry এর ডেটা পড়ে আউটপুট ফাইলে লেখা হচ্ছে।
আউটপুট:
Extracting: file1.txt
Extracting: file2.txt
Files successfully extracted.
ফাইল Extract এবং Archive পরিচালনা
Java তে ZipInputStream এবং ZipOutputStream ব্যবহার করে ফাইল কম্প্রেশন এবং ডি-কম্প্রেশন সহজে করা যায়। এগুলি ব্যবহার করে আপনি একটি বা একাধিক ফাইলকে একটি ZIP ফাইলে কম্প্রেস করতে পারেন এবং পরে সেই ফাইলটি ডি-কম্প্রেস করে পুনরায় আলাদা ফাইল হিসেবে এক্সট্র্যাক্ট করতে পারেন।
File Extracting এবং Archiving এর প্রয়োজনীয়তা:
- Space Saving:
- ফাইল কম্প্রেস করার মাধ্যমে ডিস্ক স্পেস সঞ্চয় করা যায়। বড় ফাইল বা ডিরেক্টরি গুলিকে একটি ZIP ফাইলে কম্প্রেস করে সংরক্ষণ করা যায়।
- Efficient File Transfer:
- কম্প্রেস করা ফাইলগুলি দ্রুত এবং সহজে পাঠানো যায়। ফাইল ট্রান্সফারের সময় কম্প্রেশন প্রযুক্তি গুরুত্বপূর্ণ ভূমিকা পালন করে।
- Data Backup:
- ফাইল বা ডেটার ব্যাকআপ তৈরি করার জন্য কম্প্রেশন ব্যবহৃত হয়, যা আরও কার্যকরী এবং স্পেস সঞ্চয় করে।
ZipInputStreamএবংZipOutputStreamক্লাসগুলি Java তে ফাইল কম্প্রেস এবং ডি-কম্প্রেস করার জন্য অত্যন্ত কার্যকরী।- এগুলি
zipফাইল তৈরি করা এবং সেই ফাইল থেকে ডেটা বের করার জন্য ব্যবহৃত হয়। - ZipOutputStream ব্যবহার করে ফাইলগুলি কম্প্রেস করা যায় এবং ZipInputStream ব্যবহার করে সেই কম্প্রেসড ফাইলগুলি এক্সট্র্যাক্ট (ডি-কম্প্রেস) করা যায়।
ফাইল কম্প্রেস এবং এক্সট্র্যাক্টের মাধ্যমে আমরা ডিস্ক স্পেস সঞ্চয় এবং দ্রুত ফাইল ট্রান্সফার নিশ্চিত করতে পারি।
Read more