ফাইল extract এবং archive পরিচালনা করা একটি গুরুত্বপূর্ণ কাজ যা সাধারণত ফাইল সিস্টেম পরিচালনা এবং ডেটা ব্যাকআপ/রিস্টোর ব্যবস্থাপনায় ব্যবহৃত হয়। এই কাজগুলি সাধারণত zip, tar, gzip ফাইল ফরম্যাটের সাথে সম্পর্কিত। Java তে এই ধরনের ফাইলগুলি extract (আর্কাইভ থেকে বের করা) এবং archive (আর্কাইভ করা) করার জন্য Java API এর মাধ্যমে কার্যকরভাবে পরিচালনা করা যায়।
Java তে zip file handling এবং archiving করার জন্য দুটি প্রধান লাইব্রেরি ব্যবহৃত হয়:
- java.util.zip (Zip ফাইল এবং অন্যান্য কমপ্রেসড ফাইল পরিচালনার জন্য)
- Apache Commons Compress (আরও উন্নত আর্কাইভিং ফিচারের জন্য)
এখানে java.util.zip লাইব্রেরি এবং Apache Commons Compress ব্যবহার করে ফাইল Extract এবং Archive করার দুটি উদাহরণ দেওয়া হলো।
Java java.util.zip প্যাকেজ ব্যবহার করে Zip ফাইল তৈরি এবং Extract করা
java.util.zip প্যাকেজে ZipOutputStream এবং ZipInputStream ক্লাসগুলি ব্যবহার করে আপনি ফাইল আর্কাইভ করতে এবং আর্কাইভ ফাইল থেকে ডেটা বের করতে পারেন।
১. Zip ফাইল তৈরি করা (Archive)
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileExample {
public static void main(String[] args) {
try {
// আর্কাইভ ফাইল তৈরি
FileOutputStream fos = new FileOutputStream("archive.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
// ফাইল যোগ করা
File file = new File("file1.txt");
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
// ফাইলের কন্টেন্ট zip ফাইলে লেখা
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
// ফাইল সিস্টেম স্ট্রিম বন্ধ
zos.closeEntry();
fis.close();
zos.close();
System.out.println("File archived successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
ZipOutputStreamফাইল আর্কাইভ করতে ব্যবহৃত হয়।ZipEntryফাইলের প্রতিটি এন্ট্রি বা ফাইলকে প্রতিনিধিত্ব করে।- একাধিক ফাইল যোগ করতে, একই পদ্ধতি অনুসরণ করতে হবে এবং প্রতিটি ফাইলের জন্য একটি নতুন
ZipEntryতৈরি করতে হবে।
২. Zip ফাইল Extract করা (Unzip)
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipFileExample {
public static void main(String[] args) {
try {
// Zip ফাইল পড়ার জন্য ইনপুট স্ট্রিম
FileInputStream fis = new FileInputStream("archive.zip");
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry;
// Zip এন্ট্রির জন্য লুপ
while ((entry = zis.getNextEntry()) != null) {
System.out.println("Extracting file: " + entry.getName());
// ফাইল লিখতে আউটপুট স্ট্রিম তৈরি
FileOutputStream fos = new FileOutputStream(entry.getName());
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
fos.close();
zis.closeEntry();
}
// স্ট্রিম বন্ধ করা
zis.close();
fis.close();
System.out.println("Files extracted successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
ZipInputStreamzip ফাইল পড়ার জন্য ব্যবহৃত হয়।ZipEntryব্যবহার করে zip ফাইলের প্রতিটি এন্ট্রি বের করা হয় এবংFileOutputStreamব্যবহার করে তা সিস্টেমে একটি ফাইলে লেখা হয়।
Apache Commons Compress ব্যবহার করে ফাইল Extract এবং Archive
Java-তে আরও উন্নত আর্কাইভিং ফিচার প্রয়োগ করতে Apache Commons Compress লাইব্রেরি ব্যবহার করা যেতে পারে, যা tar, gz, bz2, zip ইত্যাদি ফাইল ফরম্যাট সাপোর্ট করে।
১. Zip ফাইল তৈরি করা (Archive) using Apache Commons Compress
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import java.io.*;
public class ApacheCompressZipExample {
public static void main(String[] args) {
try (ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new FileOutputStream("archive_advanced.zip"))) {
File file = new File("file1.txt");
try (FileInputStream fis = new FileInputStream(file)) {
ZipArchiveEntry zipEntry = new ZipArchiveEntry(file.getName());
zos.putArchiveEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeArchiveEntry();
}
System.out.println("File archived using Apache Commons Compress successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
ZipArchiveOutputStreamএবংZipArchiveEntryব্যবহার করে zip ফাইল আর্কাইভ করা হয়।- Apache Commons Compress লাইব্রেরি ব্যবহারে আর্কাইভ ফাইল তৈরির প্রক্রিয়া আরও সোজা এবং নমনীয় হয়ে যায়।
২. Zip ফাইল Extract করা (Unzip) using Apache Commons Compress
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import java.io.*;
public class ApacheCompressUnzipExample {
public static void main(String[] args) {
try (ZipArchiveInputStream zis = new ZipArchiveInputStream(new FileInputStream("archive_advanced.zip"))) {
ZipArchiveEntry entry;
while ((entry = zis.getNextZipEntry()) != null) {
System.out.println("Extracting file: " + entry.getName());
try (FileOutputStream fos = new FileOutputStream(entry.getName())) {
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
}
}
System.out.println("Files extracted using Apache Commons Compress successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
ZipArchiveInputStreamএবংZipArchiveEntryব্যবহার করে zip ফাইল থেকে ডেটা বের করা হচ্ছে এবংFileOutputStreamব্যবহার করে সেগুলো আউটপুট ফাইলে লেখা হচ্ছে।
- Java
java.util.zipপ্যাকেজ এবং Apache Commons Compress লাইব্রেরি ব্যবহারে আপনি সহজেই Zip Archive তৈরি এবং extract করতে পারেন। java.util.zipপ্যাকেজ সাধারণত zip ফাইলের সাথে কাজ করার জন্য ব্যবহৃত হয়, যেখানে Apache Commons Compress লাইব্রেরি আরও উন্নত এবং বিভিন্ন আর্কাইভ ফরম্যাট (যেমনtar,gz,bz2) সাপোর্ট করে।- Java Tuples ব্যবহার করে আর্কাইভ ফাইলের নাম, আকার ইত্যাদি তথ্য সংরক্ষণ করা যেতে পারে, যা পরে পর্যালোচনা এবং ব্যবহারের জন্য সহজ হয়।
Read more