Java তে ZipEntry এবং ZipFile ক্লাসগুলি ব্যবহার করে আপনি ZIP ফাইল প্রসেস করতে পারেন। Java এর java.util.zip প্যাকেজে এই দুটি ক্লাস ZIP ফাইলের মধ্যে ডেটা কমপ্রেস, এক্সট্র্যাক্ট, এবং ম্যানিপুলেশন করতে সহায়ক।
1. ZipEntry ক্লাস
ZipEntry একটি অবজেক্ট যা ZIP ফাইলের একটি এন্ট্রি বা উপাদানকে উপস্থাপন করে। এটি ZIP ফাইলের মধ্যে সংরক্ষিত একটি ফাইল বা ডিরেক্টরি হতে পারে। ZipEntry এর মাধ্যমে আপনি ZIP ফাইলের মধ্যে উপস্থিত ফাইল বা ডিরেক্টরির নাম, আকার, টাইমস্ট্যাম্প ইত্যাদি সম্পর্কে তথ্য পেতে পারেন।
ZipEntry ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
getName(): ZIP এন্ট্রির নাম ফেরত দেয়।String entryName = zipEntry.getName();getSize(): ZIP এন্ট্রির সাইজ (বাইটে) ফেরত দেয়।long size = zipEntry.getSize();getCompressedSize(): ZIP এন্ট্রির কমপ্রেসড সাইজ (বাইটে) ফেরত দেয়।long compressedSize = zipEntry.getCompressedSize();getTime(): এন্ট্রির মডিফাইড টাইম (টাইমস্ট্যাম্প) ফেরত দেয়।long lastModifiedTime = zipEntry.getTime();setTime(long time): এন্ট্রির মডিফাইড টাইম সেট করতে ব্যবহৃত হয়।zipEntry.setTime(System.currentTimeMillis());
ZipEntry উদাহরণ:
import java.util.zip.ZipEntry;
public class ZipEntryExample {
public static void main(String[] args) {
ZipEntry entry = new ZipEntry("file1.txt");
System.out.println("Entry Name: " + entry.getName());
System.out.println("Compressed Size: " + entry.getCompressedSize());
}
}
2. ZipFile ক্লাস
ZipFile ক্লাসটি একটি ZIP ফাইলকে প্রতিনিধিত্ব করে এবং এটি আপনাকে ZIP ফাইলের মধ্যে থাকা এন্ট্রি এবং ডেটা নিয়ে কাজ করতে সাহায্য করে। আপনি ZipFile ক্লাস ব্যবহার করে ZIP ফাইল খুলে, এর ভিতরে থাকা ফাইলগুলো পড়তে, এবং বিভিন্ন বৈশিষ্ট্য পেতে পারেন।
ZipFile ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
getEntry(String name): নির্দিষ্ট নামের এন্ট্রি ফেরত দেয়।ZipEntry entry = zipFile.getEntry("file1.txt");entries(): ZIP ফাইলের সমস্ত এন্ট্রির Enumeration ফেরত দেয়।Enumeration<? extends ZipEntry> entries = zipFile.entries();getInputStream(ZipEntry entry): ZIP ফাইলের নির্দিষ্ট এন্ট্রি থেকে ইনপুট স্ট্রিম ফেরত দেয়।InputStream inputStream = zipFile.getInputStream(entry);close(): ZIP ফাইল বন্ধ করতে ব্যবহৃত হয়।zipFile.close();
ZipFile উদাহরণ:
import java.util.zip.ZipFile;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.io.IOException;
import java.io.InputStream;
public class ZipFileExample {
public static void main(String[] args) throws IOException {
// ZIP ফাইলটি ওপেন করুন
try (ZipFile zipFile = new ZipFile("example.zip")) {
// সমস্ত এন্ট্রি গুলি দেখতে
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
System.out.println("Entry Name: " + entry.getName());
// ZIP এন্ট্রির ইনপুট স্ট্রিম
try (InputStream inputStream = zipFile.getInputStream(entry)) {
// এখানে ইনপুট স্ট্রিম ব্যবহার করে ডেটা প্রসেস করতে পারবেন
}
}
}
}
}
ZipFile এবং ZipEntry ক্লাসের পারফরম্যান্স
- ZipFile ক্লাস একে একে ZIP ফাইলের এন্ট্রির তথ্য নিয়ে কাজ করে, যা বেশ মেমরি দক্ষ। এর মাধ্যমে আপনি ZIP ফাইলের ভিতরের ডেটাকে খুব সহজেই পড়তে পারবেন।
- ZipEntry ক্লাসটি একেকটি ZIP এন্ট্রির গঠন বা মেটাডেটা নিয়ে কাজ করে এবং এটি যেকোনো ফাইল বা ডিরেক্টরি সম্পর্কে তথ্য প্রদান করে।
3. ZipOutputStream (ফাইল আর্কাইভ করতে)
যখন আপনি ZIP ফাইল তৈরি করতে চান (যেমন এক বা একাধিক ফাইল কমপ্রেস করতে), তখন ZipOutputStream ব্যবহার করা হয়। এটি একটি আউটপুট স্ট্রিম যা ZIP ফাইল তৈরি করতে সাহায্য করে।
ZipOutputStream উদাহরণ:
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import java.io.FileOutputStream;
import java.io.IOException;
public class ZipOutputStreamExample {
public static void main(String[] args) throws IOException {
// ZIP ফাইল তৈরির জন্য আউটপুট স্ট্রিম
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("archive.zip"))) {
// ZIP এন্ট্রি তৈরি এবং এটি ZIP ফাইলে যোগ করা
ZipEntry entry = new ZipEntry("file1.txt");
zos.putNextEntry(entry);
// ফাইল লিখুন (এখানে, উদাহরণস্বরূপ, কন্টেন্ট যোগ করতে পারেন)
String content = "Hello, World!";
zos.write(content.getBytes());
// এন্ট্রি বন্ধ করুন
zos.closeEntry();
}
}
}
Java তে ZipEntry এবং ZipFile ক্লাসগুলি ব্যবহার করে আপনি ZIP ফাইল থেকে ডেটা পড়তে এবং এর এন্ট্রির তথ্য পেতে পারেন। এগুলির মাধ্যমে আপনি ZIP ফাইলের প্রতিটি ফাইল বা ডিরেক্টরি সম্পর্কে তথ্য পেতে এবং প্রয়োজনে তাদের সাথে কাজ করতে পারবেন। ZipOutputStream এর মাধ্যমে আপনি নতুন ZIP ফাইল তৈরি এবং ফাইল কমপ্রেস করতে সক্ষম হবেন।
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 ক্লাসের বিভিন্ন মেথড ব্যবহার করা হয়।
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 ফাইলের কার্যকরী ম্যানেজমেন্ট এবং ফাইল সিস্টেমে ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে সহায়তা করে।
Java তে ZipFile ক্লাস ব্যবহার করে আপনি ZIP ফাইলের মধ্যে থাকা ফাইলগুলো খুলতে এবং তাদের কন্টেন্ট এক্সেস করতে পারেন। ZipFile ক্লাস Java API তে java.util.zip প্যাকেজের অংশ এবং এটি একটি ZIP ফাইলের তথ্য পড়তে, ফাইল নাম্বার, আর্কাইভ সাইজ, এবং অন্যান্য ডেটা এক্সেস করতে ব্যবহৃত হয়।
ZipFile ক্লাসের সাধারণ ব্যবহার:
ZipFile ক্লাস ব্যবহার করে ZIP ফাইল খোলার জন্য নিচের সাধারণ স্টেপগুলো অনুসরণ করতে হয়:
ZipFileক্লাসের একটি ইনস্ট্যান্স তৈরি করা।- ZIP ফাইলের মধ্যে উপস্থিত
ZipEntryগুলোকে এক্সেস করা। ZipEntryব্যবহার করে ZIP ফাইলের ভিতরের নির্দিষ্ট ফাইলের কন্টেন্ট পড়া।- ZIP ফাইলটি ক্লোজ করা।
ZipFile ক্লাস ব্যবহার করে ZIP ফাইল খোলার উদাহরণ:
নিচে একটি উদাহরণ দেওয়া হলো যেখানে ZipFile ক্লাস ব্যবহার করে ZIP ফাইল খুলে তার ভিতরে থাকা ফাইলগুলোর নাম এবং কন্টেন্ট প্রদর্শন করা হচ্ছে।
ZipFile ক্লাস উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class ZipFileExample {
public static void main(String[] args) {
// ZIP ফাইলের পাথ
String zipFilePath = "example.zip";
try {
// ZipFile ক্লাস দিয়ে ZIP ফাইল খোলা
ZipFile zipFile = new ZipFile(zipFilePath);
// ZIP ফাইলের মধ্যে থাকা প্রতিটি ফাইলের উপর লুপ
zipFile.stream().forEach(entry -> {
try {
System.out.println("Extracting: " + entry.getName());
// নির্দিষ্ট ZipEntry (ফাইল) থেকে ইনপুট স্ট্রিম তৈরি
InputStream inputStream = zipFile.getInputStream(entry);
// ZIP ফাইলের কন্টেন্ট পড়া
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// ইনপুট স্ট্রিম বন্ধ করা
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
});
// ZIP ফাইল ক্লোজ করা
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- ZipFile Object:
ZipFile zipFile = new ZipFile(zipFilePath);লাইনেZipFileক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, যার মাধ্যমে ZIP ফাইলটি খোলা হয়। - ZipEntry: ZIP ফাইলের ভিতরে থাকা প্রতিটি ফাইলকে
ZipEntryহিসাবে রিটার্ন করা হয়।zipFile.stream().forEach(entry -> {...})এই লাইনেZipEntryগুলো এক এক করে প্রসেস করা হয়েছে। - InputStream:
zipFile.getInputStream(entry);লাইনে প্রতিটিZipEntryথেকে ইনপুট স্ট্রিম তৈরি করা হয়েছে এবংBufferedReaderব্যবহার করে কন্টেন্ট পড়া হয়েছে। - Close the File: সবকিছু শেষে
zipFile.close();দিয়ে ZIP ফাইলটি বন্ধ করা হয়েছে।
নোটস:
ZipFile.getInputStream(): এই মেথডটিZipEntryথেকে ইনপুট স্ট্রিম প্রদান করে, যা দিয়ে আপনি ZIP ফাইলের ভিতরে থাকা নির্দিষ্ট ফাইলের কন্টেন্ট পড়তে পারেন।- Error Handling: কোডে
IOExceptionএর জন্য এক্সেপশন হ্যান্ডলিং করা হয়েছে, যা ZIP ফাইল খোলার সময় অথবা ফাইলের কন্টেন্ট পড়ার সময় যে কোনো ত্রুটি সনাক্ত করতে সাহায্য করবে।
Additional Tips:
- যদি ZIP ফাইলের ভিতরে অনেক বড় ফাইল থাকে, তবে আপনি ফাইল এক্সট্র্যাকশন বা পঠনকে আরও দক্ষ এবং সঠিকভাবে পরিচালনা করার জন্য একটি সঠিক buffer সাইজ ব্যবহার করতে পারেন।
ZipFileক্লাসের মাধ্যমে আপনি শুধুমাত্র ZIP ফাইলের কন্টেন্ট পড়তে পারবেন, এক্সট্র্যাক্ট বা আর্কাইভ ম্যানিপুলেশন করতে চাইলেZipOutputStreamবাZipEntryব্যবহার করা উচিত।
এইভাবে Java তে ZipFile ক্লাস ব্যবহার করে আপনি খুব সহজেই ZIP ফাইলের কন্টেন্ট এক্সেস এবং প্রক্রিয়া করতে পারেন।
ZipFile ক্লাস Java এর java.util.zip প্যাকেজের একটি অংশ, যা ZIP ফাইলের মধ্যে থাকা এন্ট্রিগুলির (ফাইল বা ডিরেক্টরি) তথ্য এক্সেস এবং প্রসেস করার জন্য ব্যবহৃত হয়। ZipFile ব্যবহার করে একটি ZIP ফাইলের মধ্যে থাকা entries (ফাইল এবং ডিরেক্টরি) এর উপর অপারেশন করা যায়, যেমন এক্সেস করা, ফাইলের ভিতরের ডেটা রিড করা ইত্যাদি।
ZipFile ক্লাসের মেথডসমূহ:
entries()getEntry(String name)getInputStream(ZipEntry entry)
1. entries() মেথড:
entries() মেথডটি ZipFile এর মধ্যে সমস্ত ZipEntry (যা ফাইল বা ডিরেক্টরি হতে পারে) ফিরিয়ে দেয়। এটি একটি Enumeration<ZipEntry> প্রদান করে, যার মাধ্যমে আপনি ZIP ফাইলের সব এন্ট্রি অ্যাক্সেস করতে পারেন।
Syntax:
public Enumeration<? extends ZipEntry> entries()
ব্যবহার:
entries()মেথডটি ZIP ফাইলের সকল এন্ট্রি ফেরত দেয় এবং আপনি সেগুলি লুপের মাধ্যমে অ্যাক্সেস করতে পারেন।
উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class ZipFileExample {
public static void main(String[] args) {
try {
// ZIP ফাইল ওপেন করা
ZipFile zipFile = new ZipFile("example.zip");
// ZIP ফাইলের সমস্ত এন্ট্রি রিড করা
Enumeration<? extends ZipEntry> entries = zipFile.entries();
// প্রতিটি এন্ট্রি লুপের মাধ্যমে অ্যাক্সেস করা
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
System.out.println("Entry Name: " + entry.getName());
}
// ZIP ফাইল বন্ধ করা
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. getEntry(String name) মেথড:
getEntry(String name) মেথডটি নির্দিষ্ট নামের একটি ZipEntry (ফাইল বা ডিরেক্টরি) ফিরে আসে। এটি ব্যবহার করে আপনি ZIP ফাইলের ভিতরের নির্দিষ্ট এন্ট্রির তথ্য অ্যাক্সেস করতে পারেন।
Syntax:
public ZipEntry getEntry(String name)
ব্যবহার:
- আপনি যদি একটি নির্দিষ্ট ফাইল বা ডিরেক্টরি খুঁজতে চান, তাহলে
getEntry(String name)মেথড ব্যবহার করতে পারেন।
উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class GetEntryExample {
public static void main(String[] args) {
try {
// ZIP ফাইল ওপেন করা
ZipFile zipFile = new ZipFile("example.zip");
// একটি নির্দিষ্ট এন্ট্রি খোঁজা
ZipEntry entry = zipFile.getEntry("file1.txt");
if (entry != null) {
System.out.println("Found entry: " + entry.getName());
} else {
System.out.println("Entry not found.");
}
// ZIP ফাইল বন্ধ করা
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. getInputStream(ZipEntry entry) মেথড:
getInputStream(ZipEntry entry) মেথডটি একটি ZipEntry (যে ফাইল বা ডিরেক্টরি আপনি পছন্দ করেছেন) থেকে ইনপুট স্ট্রীম প্রদান করে, যার মাধ্যমে আপনি সেই ফাইলের কনটেন্ট রিড করতে পারবেন। এই মেথডটি ZipInputStream এর মত কাজ করে, তবে এটি শুধুমাত্র একটি নির্দিষ্ট ZipEntry এর জন্য ইনপুট স্ট্রীম রিটার্ন করে।
Syntax:
public InputStream getInputStream(ZipEntry entry)
ব্যবহার:
- এই মেথডটি ব্যবহার করে আপনি নির্দিষ্ট ZIP এন্ট্রির ভিতরের ডেটা রিড করতে পারেন। এটি খুবই কার্যকরী যখন আপনি ZIP ফাইল থেকে নির্দিষ্ট ফাইলের কনটেন্ট পড়তে চান।
উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class GetInputStreamExample {
public static void main(String[] args) {
try {
// ZIP ফাইল ওপেন করা
ZipFile zipFile = new ZipFile("example.zip");
// একটি নির্দিষ্ট এন্ট্রি খোঁজা
ZipEntry entry = zipFile.getEntry("file1.txt");
if (entry != null) {
// সেই এন্ট্রি থেকে ইনপুট স্ট্রীম পাওয়া
InputStream inputStream = zipFile.getInputStream(entry);
// ফাইলের কনটেন্ট রিড করা
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// স্ট্রীম এবং ফাইল বন্ধ করা
reader.close();
} else {
System.out.println("Entry not found.");
}
// ZIP ফাইল বন্ধ করা
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ZipFile এর মেথডসমূহের ব্যবহার সারাংশ:
entries(): ZIP ফাইলের সমস্ত এন্ট্রি ফিরিয়ে দেয় এবং আপনি প্রতিটি এন্ট্রিEnumerationবাIteratorএর মাধ্যমে এক্সেস করতে পারেন।getEntry(String name): নির্দিষ্ট একটি ZipEntry (ফাইল বা ডিরেক্টরি) খুঁজে বের করতে ব্যবহৃত হয়, যার মাধ্যমে নির্দিষ্ট ফাইল বা ডিরেক্টরি তথ্য পাওয়া যায়।getInputStream(ZipEntry entry): একটি নির্দিষ্ট ZipEntry থেকে ইনপুট স্ট্রীম প্রদান করে, যার মাধ্যমে সেই ফাইলের কনটেন্ট রিড করা যায়।
ZipFile ক্লাসের entries(), getEntry(String name), এবং getInputStream(ZipEntry entry) মেথডসমূহ খুবই গুরুত্বপূর্ণ Java Zip ফাইল ম্যানিপুলেশনে, বিশেষ করে যখন আপনি ZIP ফাইলের ভিতরের বিভিন্ন ফাইল বা ডিরেক্টরি অ্যাক্সেস করতে চান। এই মেথডগুলো আপনাকে ZIP ফাইল থেকে নির্দিষ্ট ফাইল পড়তে, সমস্ত এন্ট্রি তালিকা করতে এবং ইনপুট স্ট্রীম দিয়ে ডেটা এক্সেস করতে সাহায্য করে।
Read more