java.util.zip প্যাকেজ Java তে ZIP আর্কাইভ ফাইল তৈরি, এক্সট্রাক্ট এবং ম্যানিপুলেট করার জন্য একটি শক্তিশালী টুলসেট সরবরাহ করে। এটি Java প্রোগ্রামারদের জন্য ফাইল কম্প্রেশন, ডিকম্প্রেশন এবং অন্যান্য জিপ ফাইল সম্পর্কিত অপারেশন করার সুযোগ দেয়। java.util.zip প্যাকেজে বিভিন্ন ক্লাস রয়েছে যা ZIP ফাইল তৈরির, পড়ার, এবং অন্যান্য কম্প্রেশন প্রক্রিয়া সম্পাদন করতে ব্যবহৃত হয়।
java.util.zip প্যাকেজের ভূমিকা
java.util.zip প্যাকেজের ক্লাসগুলি Java অ্যাপ্লিকেশনগুলিকে ZIP ফাইল তৈরি এবং পরিচালনা করতে সাহায্য করে। এটি বিশেষভাবে দরকারি যখন আপনার ডেটা সংরক্ষণ করতে বা ইন্টারনেটের মাধ্যমে বড় আকারের ডেটা ট্রান্সফার করতে ZIP ফাইলের মতো কম্প্রেসড ফরম্যাট ব্যবহার করতে হয়।
মূল ক্লাসসমূহ:
ZipInputStream:- এটি একটি ইন্টারনেট স্ট্রীম ক্লাস যা একটি ZIP ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়। এটি ফাইলের প্রতিটি এন্ট্রি (যেমন ফাইল বা ডিরেক্টরি) একে একে বের করে।
ZipOutputStream:- এটি একটি আউটপুট স্ট্রীম ক্লাস যা ZIP ফাইল তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি বা একাধিক ফাইল কম্প্রেস করে একটি ZIP ফাইল তৈরি করতে সাহায্য করে।
ZipFile:- এটি একটি ক্লাস যা একটি ZIP ফাইলের এন্ট্রি সম্পর্কে তথ্য দেয় এবং এটি ব্যবহৃত হয় ZIP ফাইলের মধ্যে একটি নির্দিষ্ট এন্ট্রি পড়তে। এটি সরাসরি ZIP ফাইলের মধ্যে অবস্থিত ফাইলের বিষয়ে অ্যাক্সেস প্রদান করে।
ZipEntry:- এটি একটি ক্লাস যা ZIP ফাইলের একটি একক এন্ট্রি (যেমন একটি ফাইল বা ডিরেক্টরি) উপস্থাপন করে।
ZipEntryএর মাধ্যমে ZIP ফাইলের বিভিন্ন ফাইল, কম্প্রেশন মেথড, আর্চাইভ টাইপ ইত্যাদি নির্ধারণ করা হয়।
- এটি একটি ক্লাস যা ZIP ফাইলের একটি একক এন্ট্রি (যেমন একটি ফাইল বা ডিরেক্টরি) উপস্থাপন করে।
ZIP ফাইল তৈরি এবং পড়ার জন্য উদাহরণ:
১. ZIP ফাইল তৈরি (Write)
import java.io.*;
import java.util.zip.*;
public class CreateZipExample {
public static void main(String[] args) {
try {
// ZipOutputStream তৈরি করুন
FileOutputStream fos = new FileOutputStream("example.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// একটি ফাইল যোগ করার জন্য ZipEntry তৈরি করুন
ZipEntry entry1 = new ZipEntry("file1.txt");
zos.putNextEntry(entry1);
// ফাইলের কনটেন্ট লিখুন
String content = "This is file 1 inside zip";
zos.write(content.getBytes());
zos.closeEntry(); // entry বন্ধ করুন
// দ্বিতীয় ফাইল যোগ করুন
ZipEntry entry2 = new ZipEntry("file2.txt");
zos.putNextEntry(entry2);
String content2 = "This is file 2 inside zip";
zos.write(content2.getBytes());
zos.closeEntry();
// ZipOutputStream বন্ধ করুন
zos.close();
System.out.println("ZIP ফাইল সফলভাবে তৈরি হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- ZipOutputStream ব্যবহার করে একটি ZIP ফাইল তৈরি করা হয়েছে।
- ZipEntry এর মাধ্যমে বিভিন্ন ফাইল (যেমন
file1.txtএবংfile2.txt) ZIP ফাইলে যোগ করা হয়েছে। zos.write()ফাংশন ব্যবহার করে ফাইলের কনটেন্ট ZIP ফাইলে লেখা হয়েছে।- closeEntry() ফাংশন দিয়ে প্রতিটি এন্ট্রি বন্ধ করা হয়েছে।
২. ZIP ফাইল থেকে ডেটা পড়া (Read)
import java.io.*;
import java.util.zip.*;
public class ReadZipExample {
public static void main(String[] args) {
try {
// ZipFile তৈরি করুন
ZipFile zipFile = new ZipFile("example.zip");
// ZIP ফাইলের সব এন্ট্রি পাওয়ার জন্য Enumeration ব্যবহার করুন
zipFile.stream().forEach(entry -> {
try (InputStream is = zipFile.getInputStream(entry)) {
System.out.println("Extracting: " + entry.getName());
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
});
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- ZipFile ব্যবহার করে একটি ZIP ফাইল খোলা হয়েছে।
zipFile.getInputStream(entry)ব্যবহার করে প্রতিটি এন্ট্রির ডেটা পড়া হচ্ছে।- BufferedReader এবং InputStreamReader ব্যবহার করে ZIP ফাইলের মধ্যে থাকা টেক্সট ফাইলের কনটেন্ট পড়া হচ্ছে।
কম্প্রেশন মেথড
ZIP ফাইল তৈরির সময় আপনি কোন কম্প্রেশন মেথড ব্যবহার করবেন তা নির্বাচন করতে পারেন। ZipOutputStream এর মাধ্যমে আপনি বিভিন্ন ধরনের কম্প্রেশন মেথড ব্যবহার করতে পারেন:
- Store: কোনো কম্প্রেশন ছাড়াই ডেটা সংরক্ষণ।
- Deflate: ডিফ্লেট কম্প্রেশন মেথড (ডিফল্ট মেথড) ব্যবহার।
উদাহরণ:
zos.setMethod(ZipOutputStream.DEFLATED); // Deflate কম্প্রেশন মেথড
ZipEntry এর বৈশিষ্ট্য
ZipEntry একটি একক ফাইল বা ডিরেক্টরি উপস্থাপন করে যা ZIP ফাইলে থাকে। এর মাধ্যমে আপনি প্রতিটি ফাইলের নাম, সাইজ, কম্প্রেশন মেথড, এবং আরো অনেক কিছু জানতে পারেন।
ZipEntry entry = new ZipEntry("file1.txt");
entry.setTime(System.currentTimeMillis()); // ফাইলের সময় সেট করা
সারাংশ
java.util.zip প্যাকেজ Java অ্যাপ্লিকেশনে ZIP ফাইল পরিচালনা করতে ব্যবহৃত হয়। এটি ফাইল কম্প্রেশন, এক্সট্রাকশন, এবং ডেটা ম্যানিপুলেশন করার জন্য সহজ উপায় প্রদান করে। ZIP ফাইল তৈরি করতে ZipOutputStream এবং ZIP ফাইল থেকে ডেটা পড়তে ZipFile ও ZipInputStream ব্যবহার করা হয়। ZipEntry প্রতিটি ফাইল বা ডিরেক্টরি সংক্রান্ত তথ্য ধারণ করে।
Read more