Tar (Tape Archive) ফাইল একটি জনপ্রিয় আর্কাইভ ফরম্যাট যা Unix-like অপারেটিং সিস্টেমে ব্যবহৃত হয়। এটি একাধিক ফাইল এবং ডিরেক্টরি একত্রে একটি ফাইলে সংরক্ষণ করতে ব্যবহৃত হয়। Java তে Tar ফাইলের সাথে কাজ করার জন্য Java API সরাসরি এটি সমর্থন করে না, কিন্তু আপনি Apache Commons Compress লাইব্রেরি ব্যবহার করে Tar ফাইল তৈরি এবং Extract করতে পারেন।
Apache Commons Compress লাইব্রেরি
Apache Commons Compress লাইব্রেরি Java তে বিভিন্ন আর্কাইভ ফাইল (যেমন .tar, .gz, .zip ইত্যাদি) তৈরি এবং Extract করতে সাহায্য করে। আপনি এই লাইব্রেরি ব্যবহার করে Tar ফাইল তৈরি এবং Extract করতে পারবেন।
1. Tar ফাইল তৈরি করা (Using Apache Commons Compress)
স্টেপ 1: প্রথমে, আপনাকে Apache Commons Compress লাইব্রেরি ডাউনলোড করতে হবে। আপনি Maven ব্যবহার করলে এটি আপনার pom.xml ফাইলে যোগ করতে পারেন:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
স্টেপ 2: এবার Java কোডে Tar ফাইল তৈরি করা হবে।
import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class CreateTarFile {
public static void main(String[] args) {
String tarFilePath = "example.tar"; // Tar ফাইলের আউটপুট পাথ
String inputFilePath = "example.txt"; // যে ফাইলটি Tar ফাইলে যুক্ত হবে
try (FileOutputStream fos = new FileOutputStream(tarFilePath);
TarArchiveOutputStream tarOut = new TarArchiveOutputStream(fos)) {
// Tar ফাইলের জন্য মেটাডেটা সেট করা
tarOut.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_STAR);
tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
File fileToAdd = new File(inputFilePath);
try (FileInputStream fis = new FileInputStream(fileToAdd)) {
// ফাইলের টার এন্ট্রি তৈরি করা
TarArchiveEntry entry = new TarArchiveEntry(fileToAdd, fileToAdd.getName());
tarOut.putArchiveEntry(entry);
// ফাইলটি Tar ফাইলে লিখা
IOUtils.copy(fis, tarOut);
tarOut.closeArchiveEntry();
}
System.out.println("Tar ফাইল সফলভাবে তৈরি করা হয়েছে।");
} catch (IOException e) {
System.out.println("ত্রুটি ঘটেছে: " + e.getMessage());
}
}
}
ব্যাখ্যা:
TarArchiveOutputStreamব্যবহার করে আমরা Tar আর্কাইভ ফাইল তৈরি করছি।TarArchiveEntryএকটি এন্ট্রি তৈরি করতে ব্যবহৃত হয়, যা একটি নির্দিষ্ট ফাইল বা ডিরেক্টরির প্রতিনিধিত্ব করে।IOUtils.copy()ব্যবহার করে ফাইলের বিষয়বস্তু Tar ফাইলে কপি করা হয়।closeArchiveEntry()দ্বারা প্রতিটি এন্ট্রি বন্ধ করা হয়।
2. Tar ফাইল থেকে ফাইল Extract করা
আপনি যদি Tar ফাইল থেকে ফাইল Extract করতে চান, তবে এটি করার জন্যও Apache Commons Compress লাইব্রেরি ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো:
import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
public class ExtractTarFile {
public static void main(String[] args) {
String tarFilePath = "example.tar"; // যে Tar ফাইলটি Extract করতে হবে
String outputDir = "output/"; // এক্সট্র্যাক্ট করার গন্তব্য ফোল্ডার
File destDir = new File(outputDir);
if (!destDir.exists()) {
destDir.mkdirs(); // গন্তব্য ফোল্ডার তৈরি করা
}
try (FileInputStream fis = new FileInputStream(tarFilePath);
TarArchiveInputStream tarIn = new TarArchiveInputStream(fis)) {
TarArchiveEntry entry;
while ((entry = tarIn.getNextTarEntry()) != null) {
File outFile = new File(destDir, entry.getName());
// ফোল্ডার তৈরি করা যদি ফাইলটি ডিরেক্টরি হয়
if (entry.isDirectory()) {
outFile.mkdirs();
} else {
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile))) {
IOUtils.copy(tarIn, bos); // Tar ফাইল থেকে ডেটা কপি করা
}
}
}
System.out.println("Tar ফাইল সফলভাবে এক্সট্র্যাক্ট করা হয়েছে।");
} catch (IOException e) {
System.out.println("ত্রুটি ঘটেছে: " + e.getMessage());
}
}
}
ব্যাখ্যা:
TarArchiveInputStreamব্যবহার করা হয়েছে Tar ফাইল থেকে ডেটা পড়ার জন্য।getNextTarEntry()দ্বারা পরবর্তী এন্ট্রি পাওয়া যায় এবং এটি ফাইলের ডেটা পড়তে সহায়তা করে।IOUtils.copy()ব্যবহার করে Tar ফাইলের ডেটা ফাইলের মধ্যে লেখা হয়।mkdirs()ব্যবহার করা হয়েছে যদি কোন ডিরেক্টরি তৈরি করার প্রয়োজন হয়।
3. GZIP সহ Tar ফাইল তৈরি এবং Extract করা (Tar.gz)
আপনি যদি Tar.gz ফাইল (tar ফাইলের সাথে gzip কম্প্রেশন) তৈরি এবং এক্সট্র্যাক্ট করতে চান, তবে GZIPOutputStream এবং GZIPInputStream ব্যবহার করতে পারেন।
Tar.gz ফাইল তৈরি করা:
import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class CreateTarGzFile {
public static void main(String[] args) {
String tarFilePath = "example.tar.gz"; // আউটপুট Tar.gz ফাইলের নাম
String inputFilePath = "example.txt"; // যে ফাইলটি Tar.gz এ যুক্ত হবে
try (FileOutputStream fos = new FileOutputStream(tarFilePath);
GZIPOutputStream gzipOut = new GZIPOutputStream(fos);
TarArchiveOutputStream tarOut = new TarArchiveOutputStream(gzipOut)) {
// Tar ফাইলের জন্য মেটাডেটা সেট করা
tarOut.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_STAR);
tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
File fileToAdd = new File(inputFilePath);
try (FileInputStream fis = new FileInputStream(fileToAdd)) {
// Tar এন্ট্রি তৈরি করা
TarArchiveEntry entry = new TarArchiveEntry(fileToAdd, fileToAdd.getName());
tarOut.putArchiveEntry(entry);
// ফাইলটি Tar.gz ফাইলে লেখা
IOUtils.copy(fis, tarOut);
tarOut.closeArchiveEntry();
}
System.out.println("Tar.gz ফাইল সফলভাবে তৈরি করা হয়েছে।");
} catch (IOException e) {
System.out.println("ত্রুটি ঘটেছে: " + e.getMessage());
}
}
}
Tar.gz ফাইল Extract করা:
import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
import java.util.zip.GZIPInputStream;
public class ExtractTarGzFile {
public static void main(String[] args) {
String tarFilePath = "example.tar.gz"; // উৎস Tar.gz ফাইল
String outputDir = "output/"; // এক্সট্র্যাক্ট করার গন্তব্য ফোল্ডার
File destDir = new File(outputDir);
if (!destDir.exists()) {
destDir.mkdirs(); // গন্তব্য ফোল্ডার তৈরি করা
}
try (FileInputStream fis = new FileInputStream(tarFilePath);
GZIPInputStream gzipIn = new GZIPInputStream(fis);
TarArchiveInputStream tarIn = new TarArchiveInputStream(gzipIn)) {
TarArchiveEntry entry;
while ((entry = tarIn.getNextTarEntry()) != null) {
File outFile = new File(destDir, entry.getName());
// ফোল্ডার তৈরি করা যদি ফাইলটি ডিরেক্টরি হয়
if (entry.isDirectory()) {
outFile.mkdirs();
} else {
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile))) {
IOUtils.copy(tarIn, bos); // Tar.gz থেকে ডেটা কপি করা
}
}
}
System.out.println("Tar.gz ফাইল সফলভাবে এক্সট্র্যাক্ট করা হয়েছে।");
} catch (IOException e) {
System.out.println("ত্রুটি ঘটেছে: " + e.getMessage());
}
}
}
- Apache Commons Compress লাইব্রেরি ব্যবহার করে আপনি Tar এবং Tar.gz ফাইল তৈরি এবং এক্সট্র্যাক্ট করতে পারেন।
TarArchiveOutputStreamএবংTarArchiveInputStreamব্যবহৃত হয় Tar ফাইল তৈরির এবং পড়ার জন্য।GZIPOutputStreamএবংGZIPInputStreamব্যবহার করে আপনি Tar.gz ফাইলও তৈরি এবং এক্সট্র্যাক্ট করতে পারেন।
এই পদ্ধতিগুলি আপনাকে Java তে Tar ফাইল ম্যানিপুলেশন করতে সাহায্য করবে, এবং Apache Commons Compress লাইব্রেরি ব্যবহারের মাধ্যমে আপনি কমপ্লেক্স আর্কাইভ ফাইলগুলির সাথে সহজেই কাজ করতে পারবেন।
Read more