Java তে একটি ফাইলকে ZIP ফাইলে রূপান্তর করার জন্য java.util.zip প্যাকেজ ব্যবহার করা হয়। এই প্যাকেজের মাধ্যমে ZIP ফাইল তৈরি করা এবং এক বা একাধিক ফাইলকে সেই ZIP ফাইলে সংযুক্ত করা যায়।
এখানে একটি উদাহরণ দেওয়া হলো, যা দেখাবে কিভাবে একটি বা একাধিক ফাইলকে ZIP ফাইলে রূপান্তর করা যায়।
ফাইলকে Zip ফাইলে রূপান্তর করার উদাহরণ
এই উদাহরণে, file1.txt এবং file2.txt নামে দুটি টেক্সট ফাইলকে একটি archive.zip নামে ZIP ফাইলে রূপান্তর করা হবে।
import java.io.*;
import java.util.zip.*;
public class ZipFileExample {
public static void main(String[] args) {
// আউটপুট ZIP ফাইলের নাম
String zipFileName = "archive.zip";
// যে ফাইলগুলো ZIP ফাইলে যুক্ত হবে
String[] filesToZip = {"file1.txt", "file2.txt"};
try {
// FileOutputStream দিয়ে ZIP ফাইল তৈরি করা
FileOutputStream fos = new FileOutputStream(zipFileName);
// ZipOutputStream ব্যবহার করে ZIP আর্কাইভ তৈরি
ZipOutputStream zos = new ZipOutputStream(fos);
// প্রতিটি ফাইলের জন্য ZipEntry তৈরি করা
for (String fileName : filesToZip) {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
// ফাইলের ডেটা ZIP ফাইলে লেখার জন্য buffer ব্যবহার করা
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
// এন্ট্রি বন্ধ করা
zos.closeEntry();
fis.close();
}
// ZIP আউটপুট স্ট্রিম বন্ধ করা
zos.close();
System.out.println("ZIP file created successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
কোডের ব্যাখ্যা:
- ZipOutputStream:
ZipOutputStreamএকটি আউটপুট স্ট্রিম যা ZIP ফাইল তৈরি করার জন্য ব্যবহৃত হয়।- এটি
FileOutputStreamএর সাথে কাজ করে, যার মাধ্যমে আমরা ZIP ফাইলের উদ্দেশ্যস্থলে ডেটা লিখতে পারি।
- ZipEntry:
ZipEntryহলো ZIP ফাইলের মধ্যে একটি ফাইলের প্রতিনিধিত্ব। প্রতিটি ফাইলকে ZIP আর্কাইভে এন্ট্রি হিসেবে সংযুক্ত করতেputNextEntry()মেথড ব্যবহার করা হয়।
- FileInputStream:
- প্রতিটি ফাইলের জন্য
FileInputStreamব্যবহার করা হয়, যাতে আমরা ফাইলটির ডেটা ZIP ফাইলে লেখার জন্য পড়তে পারি।
- প্রতিটি ফাইলের জন্য
- Writing the Data:
- ফাইলের ডেটা পাঠানো হয়
buffer(যা 1024 বাইট ধারণ করে) ব্যবহার করে, এবংZipOutputStreamএর মাধ্যমে তা ZIP ফাইলে লেখানো হয়।
- ফাইলের ডেটা পাঠানো হয়
- Closing the Streams:
zos.closeEntry()এবংfis.close()ব্যবহৃত হয় যাতে প্রতিটি ফাইলের লেখার প্রক্রিয়া শেষ হয়ে যায় এবং স্ট্রিমগুলো বন্ধ হয়ে যায়।
বিভিন্ন ফাইল এবং ডিরেক্টরি ZIP ফাইলে যুক্ত করার উদাহরণ
যদি আপনি একাধিক ফাইল এবং ডিরেক্টরি একসাথে ZIP ফাইলে যোগ করতে চান, তাহলে এটি নিম্নরূপভাবে করা যেতে পারে।
import java.io.*;
import java.util.zip.*;
public class ZipDirectoryExample {
public static void main(String[] args) {
// আউটপুট ZIP ফাইলের নাম
String zipFileName = "directory.zip";
// যে ডিরেক্টরি ZIP ফাইলে যুক্ত করা হবে
String directoryToZip = "myFolder";
try {
// FileOutputStream দিয়ে ZIP ফাইল তৈরি করা
FileOutputStream fos = new FileOutputStream(zipFileName);
// ZipOutputStream ব্যবহার করে ZIP আর্কাইভ তৈরি
ZipOutputStream zos = new ZipOutputStream(fos);
// ডিরেক্টরির সব ফাইল এবং সাবডিরেক্টরি গুলি রিড করা
File dir = new File(directoryToZip);
zipDirectory(dir, dir.getName(), zos);
// ZIP আউটপুট স্ট্রিম বন্ধ করা
zos.close();
System.out.println("Directory ZIP file created successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void zipDirectory(File folder, String parentFolder, ZipOutputStream zos) throws IOException {
File[] files = folder.listFiles();
for (File file : files) {
if (file.isDirectory()) {
// যদি এটি একটি ডিরেক্টরি হয়, তবে ZIP এ ডিরেক্টরি এন্ট্রি যুক্ত করুন
zipDirectory(file, parentFolder + "/" + file.getName(), zos);
} else {
// যদি এটি একটি ফাইল হয়, তাহলে ফাইলটি ZIP এ যোগ করুন
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(parentFolder + "/" + file.getName());
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
fis.close();
}
}
}
}
কোডের ব্যাখ্যা:
- ZipEntry with Directory Structure:
zipDirectory()মেথডের মাধ্যমে ডিরেক্টরির মধ্যে থাকা সব ফাইল এবং সাবডিরেক্টরিগুলিকে ZIP ফাইলে যুক্ত করা হয়।ZipEntryব্যবহার করে প্রতিটি ফাইল বা ডিরেক্টরি আর্কাইভে অ্যাড করা হয়।
- Recursive Directory Zipping:
- যদি কোনো ফোল্ডার থাকে, তবে
zipDirectory()মেথডটি রিকার্সিভলি কাজ করবে এবং সেই ফোল্ডার এবং তার মধ্যে থাকা সব ফাইল এবং সাবডিরেক্টরি গুলিকে ZIP আর্কাইভে যুক্ত করবে।
- যদি কোনো ফোল্ডার থাকে, তবে
- ZIP ফাইল তৈরি করা Java Zip API এর মাধ্যমে খুবই সহজ এবং কার্যকরী। আপনি
ZipOutputStreamএবংZipEntryব্যবহার করে একাধিক ফাইল এবং ডিরেক্টরি দ্রুত ZIP ফাইলে সংরক্ষণ করতে পারবেন। - Java Zip API ফাইল কমপ্রেশন এবং আর্কাইভ তৈরি করার জন্য একটি শক্তিশালী এবং নমনীয় টুলস, যা আপনি আপনার অ্যাপ্লিকেশনের ফাইল পরিচালনা ক্ষমতা বাড়ানোর জন্য ব্যবহার করতে পারেন।
Content added By
Read more