ZipOutputStream একটি Java ক্লাস যা java.util.zip প্যাকেজের অন্তর্গত এবং এটি Zip ফাইল তৈরি করার জন্য ব্যবহৃত হয়। এটি আউটপুট স্ট্রিম হিসেবে কাজ করে এবং Zip ফাইলের মধ্যে একাধিক ফাইল বা ডিরেক্টরি সংরক্ষণ করতে ব্যবহৃত হয়। ZipOutputStream এর কিছু গুরুত্বপূর্ণ মেথড রয়েছে, যেগুলোর মাধ্যমে আপনি Zip ফাইলের মধ্যে ফাইল অ্যাড, ডেটা লেখার এবং এন্ট্রি বন্ধ করার কাজ করতে পারেন।
নিচে ZipOutputStream এর কিছু গুরুত্বপূর্ণ মেথড এবং তাদের ব্যবহার বর্ণনা করা হলো:
1. putNextEntry(ZipEntry e)
- বর্ণনা:
putNextEntry()মেথডটি একটি নতুন ZipEntry তৈরি করতে ব্যবহৃত হয় এবং এটি Zip ফাইলের মধ্যে একটি নতুন এন্ট্রি হিসেবে সেটি অন্তর্ভুক্ত করে। এটি একটি ফাইল বা ডিরেক্টরির প্রতিনিধিত্ব করে যা Zip আর্কাইভে সংরক্ষিত হবে। - ব্যবহার: আপনি যেই ফাইলটি Zip ফাইলে যোগ করতে চান, তার জন্য একটি
ZipEntryতৈরি করে, তারপর এই মেথডের মাধ্যমে সেই এন্ট্রিটিZipOutputStreamএ যোগ করবেন। সিনট্যাক্স:
public void putNextEntry(ZipEntry e) throws IOException- অর্থ:
e:ZipEntryঅবজেক্ট যা নতুন এন্ট্রি প্রতিনিধিত্ব করে (ফাইল বা ডিরেক্টরি)।
- কোনো ব্যতিক্রম:
- IOException: যদি কোনো I/O ত্রুটি ঘটে।
উদাহরণ:
File fileToZip = new File("file1.txt"); ZipEntry zipEntry = new ZipEntry(fileToZip.getName()); zipOut.putNextEntry(zipEntry);
2. write(byte[] b, int off, int len)
- বর্ণনা:
write()মেথডটি Zip এন্ট্রির জন্য ডেটা লেখার কাজ করে। এটি একটি নির্দিষ্ট বাইট অ্যারে থেকে ডেটা লেখে। সাধারণত, এটি একটি ফাইলের কনটেন্ট Zip ফাইলে লেখার জন্য ব্যবহৃত হয়। - ব্যবহার: যখন
putNextEntry()দ্বারা একটি নতুন এন্ট্রি তৈরি করা হয়, তখন এই মেথডটি ব্যবহার করে সেই এন্ট্রির মধ্যে ডেটা লেখা হয়। এই মেথডের মাধ্যমে আপনি নির্দিষ্ট বাইট অ্যারে পাঠাতে পারেন যা Zip ফাইলে স্টোর হবে। সিনট্যাক্স:
public void write(byte[] b, int off, int len) throws IOException- অর্থ:
b: বাইট অ্যারে যা Zip ফাইলে লেখা হবে।off: বাইট অ্যারের সূচনামূলক অবস্থান।len: কতগুলি বাইট লেখা হবে (অথবা মোট বাইট সংখ্যা)।
- কোনো ব্যতিক্রম:
- IOException: যদি কোনো I/O ত্রুটি ঘটে।
উদাহরণ:
byte[] bytes = new byte[1024]; int length; FileInputStream fis = new FileInputStream(fileToZip); while ((length = fis.read(bytes)) >= 0) { zipOut.write(bytes, 0, length); }
3. closeEntry()
- বর্ণনা:
closeEntry()মেথডটি বর্তমান ZipEntry বন্ধ করার জন্য ব্যবহৃত হয়। একবারputNextEntry()এবংwrite()ব্যবহৃত হলে,closeEntry()কল করা হয় যাতে ওই এন্ট্রির জন্য সমস্ত লেখার কাজ শেষ হয় এবং নতুন এন্ট্রি যোগ করার জন্য প্রস্তুতি নেয়া যায়। - ব্যবহার: যখন আপনি একটি ZipEntry সম্পূর্ণভাবে লেখার কাজ শেষ করেন, তখন
closeEntry()কল করতে হয়। এটি নিশ্চিত করে যে ঐ ফাইলটি Zip আর্কাইভে সঠিকভাবে সংরক্ষিত হয়েছে। সিনট্যাক্স:
public void closeEntry() throws IOException- কোনো ব্যতিক্রম:
- IOException: যদি কোনো I/O ত্রুটি ঘটে।
উদাহরণ:
zipOut.closeEntry();
সম্পূর্ণ উদাহরণ (Zip ফাইল তৈরি করা)
import java.io.*;
import java.util.zip.*;
public class ZipExample {
public static void main(String[] args) {
byte[] buffer = new byte[1024];
try {
// Zip ফাইল তৈরি করা
FileOutputStream fos = new FileOutputStream("example.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
// ফাইলের নামের উপর ভিত্তি করে ZipEntry তৈরি করা
File fileToZip = new File("file1.txt");
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
// ZipEntry যোগ করা
zipOut.putNextEntry(zipEntry);
// ফাইলের ডেটা Zip ফাইলে লেখা
int length;
while ((length = fis.read(buffer)) >= 0) {
zipOut.write(buffer, 0, length);
}
// Entry বন্ধ করা
zipOut.closeEntry();
fis.close();
// ZipOutputStream বন্ধ করা
zipOut.close();
System.out.println("Zip ফাইল সফলভাবে তৈরি হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- প্রথমে,
FileOutputStreamএবংZipOutputStreamব্যবহার করে Zip ফাইল তৈরি করা হয়েছে। putNextEntry()মেথড দ্বারাZipEntryতৈরি করা হয়েছে যাfile1.txtফাইলের প্রতিনিধিত্ব করে।- তারপর,
write()মেথড ব্যবহার করেfile1.txtফাইলের কনটেন্ট Zip ফাইলে লেখা হয়েছে। closeEntry()মেথড দ্বারা ZipEntry বন্ধ করা হয়েছে যাতে পরবর্তী এন্ট্রি যোগ করা যেতে পারে।- অবশেষে,
ZipOutputStreamবন্ধ করা হয়েছে। putNextEntry(): নতুন ZipEntry তৈরি করার জন্য ব্যবহৃত হয়।write(): ZipEntry তে ডেটা লেখার জন্য ব্যবহৃত হয়।closeEntry(): বর্তমান ZipEntry বন্ধ করে নতুন এন্ট্রি তৈরির জন্য প্রস্তুত করে।
এই মেথডগুলো ZipOutputStream ক্লাসে প্রধানত Zip ফাইল তৈরি এবং ডেটা লেখার জন্য ব্যবহৃত হয় এবং Java তে Zip ফাইলের সঙ্গে কাজ করার সময় অত্যন্ত গুরুত্বপূর্ণ।
Read more