ZipEntry ক্লাস Java তে ZIP ফাইল পরিচালনা করার জন্য ব্যবহৃত একটি ক্লাস, যা java.util.zip প্যাকেজের অংশ। ZIP ফাইল হলো একটি কম্প্রেসড ফাইল ফরম্যাট যা একাধিক ফাইলকে একটি একক ফাইলের মধ্যে সংরক্ষণ করে। এই ক্লাসটি Java তে ZIP ফাইলের একক এন্ট্রি (ফাইল বা ডিরেক্টরি) প্রতিনিধিত্ব করে এবং ZipInputStream, ZipOutputStream বা ZipFile এর মাধ্যমে ZIP ফাইলের ভিতরে থাকা ফাইল বা ডিরেক্টরি সম্পর্কে তথ্য অ্যাক্সেস এবং পরিচালনা করতে ব্যবহৃত হয়।
ZipEntry ক্লাসের ভূমিকা:
ZipEntry ক্লাসটি ZIP ফাইলের মধ্যে সংরক্ষিত প্রতিটি ফাইল বা ডিরেক্টরির প্রতিনিধিত্ব করে। এটি ফাইলের মেটাডেটা যেমন নাম, আকার, চূড়ান্ত সংশোধন সময়, এবং কম্প্রেসন স্ট্যাটাস সংরক্ষণ করে। ZipEntry এর মাধ্যমে আপনি ZIP ফাইলের ভিতরে প্রতিটি ফাইলের উপর কার্যক্রম (যেমন ফাইলের উপাদান বের করা বা ফাইল সংরক্ষণ করা) পরিচালনা করতে পারেন।
ZipEntry ক্লাসের প্রধান বৈশিষ্ট্য:
- ফাইল নাম (Entry Name):
- ZIP ফাইলের প্রতিটি এন্ট্রির একটি নাম থাকে। এটি ফাইলের আসল নাম বা ডিরেক্টরি হতে পারে।
getName()মেথড দ্বারা ফাইলের নাম পাওয়া যায়।
- ফাইল আকার (File Size):
getSize()মেথড দিয়ে ফাইলের আকার (byte আকারে) পাওয়া যায়।
- ফাইলের কম্প্রেশন স্ট্যাটাস:
getMethod()মেথডের মাধ্যমে আপনি জানতে পারবেন ফাইলটি কম্প্রেস করা হয়েছে কি না এবং কিভাবে।- দুটি প্রধান কম্প্রেশন মেথড রয়েছে:
ZipEntry.DEFLATED(যখন ফাইল কম্প্রেস করা হয়)ZipEntry.STORED(যখন ফাইল কম্প্রেস করা হয়নি)
- ফাইলের সংশোধন সময় (Modification Time):
getTime()মেথড ব্যবহার করে ফাইলের সংশোধন সময় (মিলিসেকেন্ড) পাওয়া যায়।
- ডিরেক্টরি চেক করা:
isDirectory()মেথড দিয়ে চেক করা যায়, যদি ZIP এন্ট্রি একটি ডিরেক্টরি হয়।
- Extra Field:
getExtra()মেথড দিয়ে ফাইলের অতিরিক্ত তথ্য (যদি থাকে) পাওয়া যায়।
ZipEntry ক্লাসের সাধারণ ব্যবহার:
1. ZIP ফাইল থেকে এন্ট্রি বের করার উদাহরণ:
import java.util.zip.*;
import java.io.*;
public class ZipEntryExample {
public static void main(String[] args) {
try {
// ZIP ফাইল খোলা
FileInputStream fis = new FileInputStream("example.zip");
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
System.out.println("Entry Name: " + entry.getName());
System.out.println("Size: " + entry.getSize());
System.out.println("Method: " + (entry.getMethod() == ZipEntry.DEFLATED ? "Deflated" : "Stored"));
// যদি এন্ট্রি একটি ডিরেক্টরি হয়
if (entry.isDirectory()) {
System.out.println("This is a directory.");
}
// ফাইলের উপাদান পড়া
int byteRead;
byte[] buffer = new byte[1024];
while ((byteRead = zis.read(buffer)) != -1) {
System.out.write(buffer, 0, byteRead);
}
zis.closeEntry(); // এন্ট্রি বন্ধ করা
}
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. ZIP ফাইলে এন্ট্রি যোগ করার উদাহরণ:
import java.util.zip.*;
import java.io.*;
public class ZipEntryCreateExample {
public static void main(String[] args) {
try {
// ZIP ফাইল তৈরি করা
FileOutputStream fos = new FileOutputStream("example.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// নতুন ZipEntry তৈরি
String fileName = "sample.txt";
ZipEntry entry = new ZipEntry(fileName);
// ফাইলের আকার, সংশোধন সময় ইত্যাদি নির্ধারণ করা
entry.setSize(1024);
entry.setTime(System.currentTimeMillis());
// ZipEntry যোগ করা
zos.putNextEntry(entry);
// ফাইলের তথ্য লিখা
String data = "This is a sample text inside the ZIP file.";
zos.write(data.getBytes());
zos.closeEntry(); // এন্ট্রি বন্ধ করা
zos.close(); // ZIP ফাইল বন্ধ করা
System.out.println("ZIP file created with the entry.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ZipEntry ক্লাসের মূল মেথডস:
getName(): এন্ট্রির নাম ফেরত দেয়।getSize(): এন্ট্রির আকার ফেরত দেয়।getMethod(): ফাইলের কম্প্রেশন মেথড ফেরত দেয়।getTime(): এন্ট্রির সংশোধন সময় ফেরত দেয়।isDirectory(): চেক করে, যদি এন্ট্রি একটি ডিরেক্টরি হয়।setSize(long size): ZIP এন্ট্রির সাইজ সেট করা।setTime(long time): ZIP এন্ট্রির সংশোধন সময় সেট করা।
ZipEntry ক্লাসটি Java তে ZIP ফাইলের প্রতিটি এন্ট্রির মেটাডেটা এবং ফাইল প্রসেসিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি ZipInputStream, ZipOutputStream বা ZipFile এর মাধ্যমে ZIP ফাইলের ভিতরে থাকা ফাইল বা ডিরেক্টরির তথ্য পড়তে বা লিখতে ব্যবহৃত হয়। ZIP ফাইলের একটি এন্ট্রির নাম, সাইজ, কম্প্রেশন মেথড, সংশোধন সময় ইত্যাদি পরিচালনা এবং অ্যাক্সেস করতে ZipEntry ক্লাসের বিভিন্ন মেথড ব্যবহার করা হয়।
Read more