Java Zip প্যাকেজের মাধ্যমে ফাইল এবং ডিরেক্টরি Unzip করার জন্য আপনি ZipInputStream এবং ZipEntry ব্যবহার করতে পারেন। নিচে একটি প্র্যাকটিক্যাল উদাহরণ দেয়া হলো যেখানে একটি ZIP ফাইল থেকে ফাইল এবং ডিরেক্টরি আর্কাইভ করা হয়েছে এবং সেই ZIP ফাইল থেকে ফাইল এবং ডিরেক্টরি Unzip করা হচ্ছে।
ফাইল এবং ডিরেক্টরি Unzip করার উদাহরণ:
1. Unzip করার কোড (Zip ফাইল থেকে ফাইল এবং ডিরেক্টরি Unzip করা)
import java.io.*;
import java.util.zip.*;
public class UnzipExample {
public static void main(String[] args) {
String zipFilePath = "example.zip"; // ZIP ফাইলের পাথ
String destDir = "extracted/"; // Unzip করার গন্তব্য ডিরেক্টরি
// ডিরেক্টরি তৈরি করা, যদি তা না থাকে
File dir = new File(destDir);
if (!dir.exists()) {
dir.mkdir();
}
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath))) {
ZipEntry entry;
// ZIP ফাইলের প্রতিটি এন্ট্রি (ফাইল বা ডিরেক্টরি) একে একে প্রসেস করা
while ((entry = zis.getNextEntry()) != null) {
String entryName = entry.getName();
File newFile = new File(destDir + entryName);
// যদি এটি একটি ডিরেক্টরি হয়, তবে ডিরেক্টরি তৈরি করা
if (entry.isDirectory()) {
newFile.mkdir();
System.out.println("Directory created: " + entryName);
} else {
// ফাইল লেখার জন্য প্রক্রিয়া
// ফোল্ডার থাকলে তা তৈরি করা
new File(newFile.getParent()).mkdirs();
try (FileOutputStream fos = new FileOutputStream(newFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
System.out.println("File extracted: " + entryName);
}
}
// পরবর্তী এন্ট্রির জন্য প্রবেশ
zis.closeEntry();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Code Explanation:
- ZipInputStream:
ZipInputStreamব্যবহার করে ZIP ফাইল থেকে ডেটা রিড করতে শুরু করা হয়।new ZipInputStream(new FileInputStream(zipFilePath))দিয়ে ZIP ফাইলটি খোলা হয়।
- ZipEntry:
ZipInputStreamএরgetNextEntry()মেথড দিয়ে ZIP ফাইলের প্রতিটি এন্ট্রি (ফাইল বা ডিরেক্টরি) খোঁজা হয়।- প্রতিটি এন্ট্রি একটি
ZipEntryঅবজেক্ট হিসেবে পাওয়া যায়, যা ZIP ফাইলের ভিতরে থাকা একটি ফাইল বা ডিরেক্টরি প্রতিনিধিত্ব করে।
- Check if Directory:
ZipEntry.isDirectory()মেথড দিয়ে চেক করা হয় যে, এই এন্ট্রি একটি ডিরেক্টরি কিনা। যদি এটি একটি ডিরেক্টরি হয়, তাহলে সেই নামের একটি ডিরেক্টরি তৈরি করা হয়।
- Extract File:
- যদি এটি একটি ফাইল হয়, তবে ফাইলটি একটি নতুন ফাইল হিসেবে বের করা হয় এবং ফাইলের ডেটা
FileOutputStreamএর মাধ্যমে লেখা হয়।
- যদি এটি একটি ফাইল হয়, তবে ফাইলটি একটি নতুন ফাইল হিসেবে বের করা হয় এবং ফাইলের ডেটা
- Folder Creation:
- যদি ZIP ফাইলে একটি ফোল্ডার থাকে, তবে সেই ফোল্ডারটি তৈরি করা হয়।
new File(newFile.getParent()).mkdirs()এই লাইনটি ফোল্ডার তৈরি করতে ব্যবহার করা হয়।
- Error Handling:
- কোনো ধরণের
IOExceptionহলে সেটি ক্যাচ করে প্রিন্ট করা হয়।
- কোনো ধরণের
ফলাফল:
এই কোডটি একটি ZIP ফাইল থেকে ফাইল এবং ডিরেক্টরি আলাদা করে বের করবে এবং নির্দিষ্ট গন্তব্য ডিরেক্টরিতে সংরক্ষণ করবে।
উদাহরণ ZIP ফাইল:
ধরা যাক, আমাদের একটি example.zip ফাইল আছে, যার ভিতরে একটি ফাইল file1.txt এবং একটি ডিরেক্টরি folder1/ রয়েছে। ZIP ফাইলটি এমনভাবে স্ট্রাকচার করা হয়েছে:
example.zip
├── file1.txt
└── folder1/
└── file2.txt
Unzip করার পরে:
কোডটি চালানোর পরে extracted/ নামক ডিরেক্টরিতে এই স্ট্রাকচারটি থাকবে:
extracted/
├── file1.txt
└── folder1/
└── file2.txt
এই উদাহরণটি দেখিয়েছে কিভাবে একটি ZIP ফাইল থেকে ফাইল এবং ডিরেক্টরি বের করা যায় Java তে। ZipInputStream এবং ZipEntry এর সাহায্যে ফাইল ও ডিরেক্টরি Unzip করা খুবই সহজ এবং কার্যকরী। ZIP ফাইলের ভিতরে থাকা বিভিন্ন ধরনের এন্ট্রি (ফাইল বা ডিরেক্টরি) আলাদা করে বের করা এবং সেগুলি নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করা সম্ভব।
Read more