ZipInputStream একটি Java ক্লাস যা java.util.zip প্যাকেজে অন্তর্ভুক্ত এবং এটি একটি ইনপুট স্ট্রিমের মাধ্যমে ZIP ফাইল থেকে ডেটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়। এটি বিশেষভাবে ZIP ফাইলের উপাদানগুলি (যেমন, ফাইল এবং ডিরেক্টরি) পড়ার জন্য ডিজাইন করা হয়েছে। ZipInputStream ব্যবহার করে আপনি একটি ZIP ফাইলের মধ্যে সংরক্ষিত ফাইলের প্রতি এন্ট্রি (entry) পড়তে পারেন এবং সেগুলিকে ডিকম্প্রেস বা এক্সট্র্যাক্ট করতে পারেন।
ZipInputStream এর ভূমিকা:
- ZIP ফাইলের মধ্যে ফাইল এক্সট্র্যাক্ট করা:
ZipInputStreamব্যবহার করে আপনি একটি ZIP ফাইলের বিভিন্ন ফাইল বা ডিরেক্টরি থেকে ডেটা পড়তে পারেন।- এটি ফাইলের প্রতিটি
ZipEntryপড়ে এবং তার মধ্যে থাকা ডেটা প্রক্রিয়া করে।
- ফাইলের এক্সট্র্যাকশন (Decompression):
ZipInputStreamকম্প্রেসড ZIP ফাইলের মধ্যে থাকা ডেটাকে ডিকম্প্রেস করে এবং তা অ্যাক্সেস করতে সাহায্য করে।- একে একে প্রতিটি ফাইল বা ডিরেক্টরি থেকে ডেটা বের করা হয়।
- ZIP এন্ট্রি পড়া:
ZipInputStreamপ্রতিটিZipEntryএন্ট্রি কে পড়ে এবং তার ভিতরে থাকা ডেটাInputStreamহিসাবে প্রদান করে।- প্রতিটি
ZipEntryএকটি ফাইল বা ডিরেক্টরি হতে পারে এবং এটি ZIP ফাইলের সংরক্ষিত ফাইল বা ডিরেক্টরির তথ্য ধারণ করে (যেমন, ফাইলের নাম, সাইজ, টাইমস্ট্যাম্প, ইত্যাদি)।
- ইভেন্ট ড্রিভেন পার্সিং:
ZipInputStreamএকটি স্ট্রিমিং API, অর্থাৎ এটি একটি ইভেন্ট ড্রিভেন পদ্ধতিতে কাজ করে। আপনি যখনZipInputStreamব্যবহার করেন, এটি স্বয়ংক্রিয়ভাবে ZIP ফাইলের প্রতিটি এন্ট্রি (entry) পড়ে এবং আপনাকে সেই অনুযায়ী ডেটা পরিচালনা করতে দেয়।
ZipInputStream এর ব্যবহার
এখানে একটি উদাহরণ দেওয়া হলো, যেখানে ZipInputStream ব্যবহার করে একটি ZIP ফাইল থেকে ফাইল এক্সট্র্যাক্ট করা হচ্ছে:
import java.io.*;
import java.util.zip.*;
public class ZipExtractExample {
public static void main(String[] args) {
String zipFilePath = "example.zip"; // উৎস Zip ফাইল
String outputDir = "output/"; // গন্তব্য ফোল্ডার
File dir = new File(outputDir);
if (!dir.exists()) {
dir.mkdir(); // গন্তব্য ফোল্ডার তৈরি করা
}
try (FileInputStream fis = new FileInputStream(zipFilePath);
ZipInputStream zis = new ZipInputStream(fis)) {
ZipEntry zipEntry;
while ((zipEntry = zis.getNextEntry()) != null) { // ZIP এন্ট্রি পেতে
File newFile = new File(outputDir, zipEntry.getName()); // ফাইলের গন্তব্য নির্ধারণ
// ফোল্ডার তৈরি করা
new File(newFile.getParent()).mkdirs();
// ফাইল লেখা
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile))) {
byte[] bytes = new byte[1024];
int length;
while ((length = zis.read(bytes)) >= 0) {
bos.write(bytes, 0, length); // ZIP ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা
}
}
zis.closeEntry(); // এন্ট্রি বন্ধ করা
}
System.out.println("Zip ফাইল এক্সট্র্যাক্ট সফলভাবে করা হয়েছে।");
} catch (IOException e) {
System.out.println("ত্রুটি ঘটেছে: " + e.getMessage());
}
}
}
কোড ব্যাখ্যা:
- ZipInputStream তৈরি:
FileInputStreamএর মাধ্যমে ZIP ফাইলটি ওপেন করা হয় এবং এটিZipInputStreamএর মাধ্যমে পড়া হয়। - ZipEntry:
ZipInputStreamথেকে প্রতিটিZipEntry(ফাইল বা ডিরেক্টরি) পড়া হয়। এটি ZIP ফাইলের প্রতিটি ফাইল বা ডিরেক্টরি সম্পর্কে তথ্য ধারণ করে। - BufferedOutputStream: ZIP ফাইলের থেকে ডেটা এক্সট্র্যাক্ট করা হয় এবং তা একটি নতুন ফাইলে লেখা হয়।
- zis.getNextEntry(): এটি
ZipInputStreamথেকে পরবর্তীZipEntryনিয়ে আসে, যা ফাইলের নাম, সাইজ, টাইমস্ট্যাম্প এবং অন্যান্য মেটাডেটা ধারণ করে।
ZipInputStream এর কার্যকারিতা:
- ডেটা স্ট্রিমিং:
ZipInputStreamএকটি স্ট্রিমিং API, যেখানে আপনি একে একে ফাইলগুলিকে পড়তে পারেন। এটি একে একে সমস্ত এন্ট্রি (ফাইল বা ডিরেক্টরি) প্রসেস করে। - ফাইল এক্সট্র্যাক্ট করা: আপনি
ZipInputStreamব্যবহার করে ZIP ফাইলের মধ্যে থেকে ডেটা পড়তে এবং ডিকম্প্রেস করতে পারেন। এটি আর্কাইভ ফাইলের সকল তথ্য (ফাইল, নাম, মেটাডেটা) পড়ে এবং এক্সট্র্যাক্ট করে।
ZipInputStream এর সুবিধা:
- স্ট্রিমিং পার্সিং: ZIP ফাইলগুলি বড় হলে এটি মেমরি দক্ষ, কারণ এটি পুরো ফাইলটি মেমরিতে লোড না করে একে একে প্রতিটি এন্ট্রি পড়ে।
- ইভেন্ট ড্রিভেন: ZIP ফাইল থেকে ডেটা পড়ার জন্য
ZipInputStreamএকটি ইভেন্ট ড্রিভেন পদ্ধতি ব্যবহার করে, যা সহজে ফাইল প্রসেসিং করে। - ক্রস-প্ল্যাটফর্ম সমর্থন:
ZipInputStreamএকটি ক্রস-প্ল্যাটফর্ম সমাধান, তাই এটি বিভিন্ন অপারেটিং সিস্টেমে কার্যকরী।
ZipInputStream হল Java তে একটি শক্তিশালী ক্লাস যা ZIP ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য ব্যবহৃত হয়। এটি মেমরি-দক্ষ এবং স্ট্রিমিং পার্সিং প্রযুক্তি ব্যবহার করে, যা বড় ZIP ফাইলের সাথে কাজ করতে সাহায্য করে। ZipInputStream এর মাধ্যমে আপনি সহজেই ZIP ফাইল থেকে ফাইল এক্সট্র্যাক্ট করতে পারেন এবং Java অ্যাপ্লিকেশনে ব্যবহার করতে পারেন।
Read more