ZipEntry ক্লাস Java এর java.util.zip প্যাকেজের একটি অংশ, যা ZIP ফাইলের মধ্যে সংরক্ষিত প্রতিটি ফাইল বা ডিরেক্টরির প্রতিনিধিত্ব করে। এটি ZIP ফাইলের ভিতরের একটি একক এন্ট্রি হিসেবে কাজ করে। ZipEntry ক্লাস আপনাকে একটি ZIP ফাইলের একক ফাইল বা ডিরেক্টরি সম্পর্কে তথ্য প্রদান করতে এবং সেই ফাইল বা ডিরেক্টরির উপর অপারেশন করতে সক্ষম করে।
ZipEntry ক্লাসের ভূমিকা:
- ZipEntry একটি ফাইল বা ডিরেক্টরি যা একটি ZIP আর্কাইভে সংরক্ষিত থাকে, এর মেটাডেটা (যেমন ফাইল নাম, সাইজ, মডিফিকেশন সময়, ইত্যাদি) ধারণ করে।
- এটি
ZipInputStreamএবংZipOutputStreamএর সাথে কাজ করে, যাতে আপনি ZIP ফাইল থেকে ডেটা রিড বা রাইট করতে পারেন।
ZipEntry ক্লাসের গুরুত্বপূর্ণ মেথডসমূহ:
getName(): এই মেথডটি ZIP এন্ট্রির নাম (ফাইল বা ডিরেক্টরি) ফেরত দেয়।getSize(): এই মেথডটি ফাইলের সাইজ প্রদান করে (যদি এটি একটি ফাইল হয়)।getCompressedSize(): কমপ্রেসড সাইজ ফেরত দেয়।getTime(): ফাইলের মডিফিকেশন সময় প্রদান করে।isDirectory(): এটি চেক করে যে, এন্ট্রি একটি ডিরেক্টরি কিনা।setMethod(int method): এটি কিভাবে ফাইল কম্প্রেস করা হবে তা সেট করতে ব্যবহৃত হয় (যেমনZipEntry.DEFLATEDবাZipEntry.STORED)।
ZipEntry এর মাধ্যমে ফাইল এবং ডিরেক্টরি Access করার উদাহরণ:
1. ZIP ফাইল থেকে ফাইল এবং ডিরেক্টরি এক্সেস করা (ZipInputStream ব্যবহার):
import java.io.*;
import java.util.zip.*;
public class ZipEntryExample {
public static void main(String[] args) {
try {
// ZIP ফাইল থেকে ইনপুট স্ট্রিম তৈরি
FileInputStream fis = new FileInputStream("example.zip");
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry;
// ZIP ফাইলের প্রতিটি এন্ট্রি (ফাইল বা ডিরেক্টরি) এর জন্য লুপ
while ((entry = zis.getNextEntry()) != null) {
System.out.println("Entry Name: " + entry.getName());
// যদি এন্ট্রি একটি ডিরেক্টরি হয়
if (entry.isDirectory()) {
System.out.println(entry.getName() + " is a directory.");
} else {
// যদি এটি একটি ফাইল হয়, তা হলে ফাইলের তথ্য এবং কনটেন্ট প্রসেস করা
System.out.println(entry.getName() + " is a file.");
// ফাইল ডেটা রিড করার উদাহরণ
int data;
while ((data = zis.read()) != -1) {
System.out.print((char) data);
}
System.out.println();
}
// পরবর্তী এন্ট্রির জন্য প্রস্তুতি
zis.closeEntry();
}
// স্ট্রিম বন্ধ করা
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Code Explanation:
- ZipInputStream ব্যবহার করে একটি ZIP ফাইল খুলছি এবং ফাইলের প্রতিটি ZipEntry এন্ট্রি এক্সেস করছি।
- getNextEntry() মেথড ব্যবহার করে ZIP ফাইলের প্রতিটি এন্ট্রি খুঁজে বের করছি। এটি প্রত্যেকটি ফাইল বা ডিরেক্টরি হিসাবে প্রতিনিধিত্ব করে।
- ZipEntry এর getName() মেথড ব্যবহার করে প্রতিটি এন্ট্রির নাম প্রিন্ট করছি।
- isDirectory() মেথড ব্যবহার করে চেক করছি এন্ট্রি একটি ডিরেক্টরি কিনা।
- read() মেথড ব্যবহার করে ফাইলের ডেটা রিড করছি (যদি এটি একটি ফাইল হয়)।
- শেষে closeEntry() মেথড ব্যবহার করে বর্তমান এন্ট্রি বন্ধ করছি এবং পরবর্তী এন্ট্রি খোলার জন্য প্রস্তুতি নিচ্ছি।
2. ZIP ফাইল তৈরি করা এবং ফাইল/ডিরেক্টরি যোগ করা (ZipOutputStream ব্যবহার):
import java.io.*;
import java.util.zip.*;
public class CreateZipExample {
public static void main(String[] args) {
try {
// আউটপুট স্ট্রিমের মাধ্যমে ZIP ফাইল তৈরি
FileOutputStream fos = new FileOutputStream("created_example.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// ZIP এ একটি ফাইল যোগ করা
String fileName = "testfile.txt";
ZipEntry entry = new ZipEntry(fileName);
zos.putNextEntry(entry);
// ফাইলের কনটেন্ট লিখুন
String content = "This is a test file inside a ZIP archive.";
byte[] data = content.getBytes();
zos.write(data, 0, data.length);
// এন্ট্রি বন্ধ করুন
zos.closeEntry();
// ZIP ফাইলে একটি ডিরেক্টরি যোগ করা
String dirName = "testDir/";
ZipEntry dirEntry = new ZipEntry(dirName);
dirEntry.setDirectory(true); // Set the directory flag
zos.putNextEntry(dirEntry);
zos.closeEntry();
// ZIP ফাইল বন্ধ করা
zos.close();
fos.close();
System.out.println("ZIP file created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Code Explanation:
- ZipOutputStream ব্যবহার করে একটি নতুন ZIP ফাইল তৈরি করছি।
- ZipEntry এর মাধ্যমে একটি নতুন ফাইল
testfile.txtZIP ফাইলে যোগ করছি। - putNextEntry() মেথড ব্যবহার করে ZIP ফাইলে এন্ট্রি (ফাইল বা ডিরেক্টরি) যোগ করছি।
- ডিরেক্টরি তৈরি করার জন্য setDirectory(true) ব্যবহার করছি, যাতে এটি একটি ডিরেক্টরি হিসেবে চিহ্নিত হয়।
- closeEntry() মেথড ব্যবহার করে ফাইল বা ডিরেক্টরি বন্ধ করছি।
ZipEntry এর মাধ্যমে ফাইল এবং ডিরেক্টরি Access করার সুবিধা:
- File Compression: আপনি ZIP ফাইলের মধ্যে ফাইলগুলি কম্প্রেস করতে পারেন এবং তারপরে এগুলি এক্সেস করতে পারেন।
- Multiple Files Handling: একাধিক ফাইল বা ডিরেক্টরি একযোগে ZIP ফাইলে যোগ করতে পারেন এবং প্রতিটি ফাইলের উপর আলাদাভাবে অপারেশন করতে পারেন।
- Efficient File Management: ZipEntry এর মাধ্যমে ZIP আর্কাইভের মধ্যে ফাইল বা ডিরেক্টরি এক্সেস করা সহজ এবং কার্যকর।
ZipEntry Java তে ZIP ফাইলের মধ্যে সংরক্ষিত একক ফাইল বা ডিরেক্টরির প্রতিনিধিত্ব করে এবং এটি ZipInputStream এবং ZipOutputStream এর সাথে কাজ করতে ব্যবহৃত হয়। আপনি এর মাধ্যমে ZIP ফাইলের প্রতিটি এন্ট্রি রিড করতে, ফাইল লিখতে এবং ডিরেক্টরি ম্যানেজ করতে সক্ষম। এটি ZIP ফাইলের কার্যকরী ম্যানেজমেন্ট এবং ফাইল সিস্টেমে ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে সহায়তা করে।
Read more