Java তে TAR (Tape Archive) ফাইল ব্যবহৃত হয় অনেক ফাইল বা ডিরেক্টরি একত্রিত (archive) করতে। TAR ফাইল মূলত একটি আর্কাইভ ফাইল, কিন্তু এটি কম্প্রেশন ফরম্যাট নয়। TAR ফাইলের মধ্যে একাধিক ফাইল এবং ডিরেক্টরি থাকে, যা একটি একক ফাইল হিসাবে সংরক্ষিত থাকে। TarInputStream, TarOutputStream, এবং TarEntry ক্লাসগুলি Java তে TAR ফাইল হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
1. TarEntry
TarEntry একটি ক্লাস যা TAR ফাইলের একটি এন্ট্রি বা উপাদানকে উপস্থাপন করে। প্রতিটি TarEntry সাধারণত একটি ফাইল বা ডিরেক্টরি এবং এর মেটাডেটা (যেমন ফাইলের নাম, সাইজ, মোড, টাইমস্ট্যাম্প ইত্যাদি) ধারণ করে।
ভূমিকা:
- ফাইল বা ডিরেক্টরি উপাদান:
TarEntryএকটি নির্দিষ্ট ফাইল বা ডিরেক্টরি এন্ট্রি হিসাবে কাজ করে। - মেটাডেটা: এটি সেই ফাইল বা ডিরেক্টরির বিভিন্ন বৈশিষ্ট্য যেমন সাইজ, পাথ, এবং টাইমস্ট্যাম্প সংরক্ষণ করে।
- এন্ট্রি তৈরি: এটি নতুন TAR এন্ট্রি তৈরি করতে ব্যবহার করা হয় এবং
TarInputStreamএবংTarOutputStreamএর মাধ্যমে ফাইলের তথ্য পঠন বা লেখার সময় ব্যবহৃত হয়।
উদাহরণ:
import java.util.zip.*;
import java.io.*;
public class TarEntryExample {
public static void main(String[] args) {
// TarEntry তৈরি
TarEntry entry = new TarEntry("file.txt");
entry.setSize(1024); // ফাইল সাইজ নির্ধারণ
entry.setModTime(System.currentTimeMillis()); // ফাইলের মডিফিকেশন টাইম সেট করা
// TarEntry এর তথ্য প্রিন্ট করা
System.out.println("Entry Name: " + entry.getName());
System.out.println("Entry Size: " + entry.getSize());
System.out.println("Modification Time: " + entry.getModTime());
}
}
2. TarInputStream
TarInputStream একটি স্ট্রিম ক্লাস যা TAR ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি মূলত একটি ইনপুট স্ট্রিম, যা TAR ফাইলের ভিতরে থাকা প্রতিটি TarEntry থেকে ডেটা পড়তে সক্ষম।
ভূমিকা:
- ফাইলের মধ্যে পড়া: এটি TAR ফাইলের মধ্যে থাকা ফাইল বা ডিরেক্টরি থেকে ডেটা পড়তে ব্যবহৃত হয়।
- স্ট্রিমিং API:
TarInputStreamস্ট্রিমিং পদ্ধতিতে কাজ করে, অর্থাৎ এটি একের পর এক ফাইলের ডেটা প্রক্রিয়া করতে সক্ষম। - TAR এন্ট্রি প্রসেস করা:
TarInputStreamব্যবহার করে TAR ফাইলের প্রতিটিTarEntryএর ডেটা পড়া এবং প্রসেস করা হয়।
উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class TarInputStreamExample {
public static void main(String[] args) {
String tarFilePath = "example.tar";
try (TarInputStream tarIn = new TarInputStream(new FileInputStream(tarFilePath))) {
TarEntry entry;
// TAR ফাইলের সব এন্ট্রি পড়ে
while ((entry = tarIn.getNextEntry()) != null) {
System.out.println("Extracting: " + entry.getName());
// প্রতিটি entry থেকে ডেটা পড়া
byte[] buffer = new byte[1024];
int length;
while ((length = tarIn.read(buffer)) > 0) {
// এখানে ডেটা প্রক্রিয়া বা ফাইল লেখার কোড দেওয়া যেতে পারে
}
}
} catch (IOException e) {
System.err.println("Error reading TAR file: " + e.getMessage());
}
}
}
3. TarOutputStream
TarOutputStream একটি আউটপুট স্ট্রিম ক্লাস যা TAR ফাইল তৈরি এবং লেখার জন্য ব্যবহৃত হয়। এটি TarEntry তৈরি করে এবং প্রতিটি TarEntry এর ডেটা TAR ফাইলে লেখে। এটি নতুন TAR আর্কাইভ তৈরি বা বিদ্যমান TAR ফাইলে ফাইল যুক্ত করার জন্য ব্যবহৃত হয়।
ভূমিকা:
- ফাইল তৈরি ও লেখার জন্য:
TarOutputStreamব্যবহার করে নতুন TAR ফাইল তৈরি করা এবং ডিরেক্টরি বা ফাইল যোগ করা হয়। - TAR এন্ট্রি তৈরি: এটি
TarEntryতৈরি করতে এবং এগুলি TAR ফাইলে সংযুক্ত করতে ব্যবহৃত হয়। - ডেটা লেখা: এটি প্রতিটি ফাইলের ডেটা TAR ফাইলে লেখে।
উদাহরণ:
import java.io.*;
import java.util.zip.*;
public class TarOutputStreamExample {
public static void main(String[] args) {
String outputTarFile = "output.tar";
try (TarOutputStream tarOut = new TarOutputStream(new FileOutputStream(outputTarFile))) {
// TarEntry তৈরি
TarEntry entry = new TarEntry("file1.txt");
entry.setSize(1024); // ফাইল সাইজ
tarOut.putNextEntry(entry);
// ডেটা লেখার জন্য
String fileContent = "Hello, TAR!";
byte[] contentBytes = fileContent.getBytes();
tarOut.write(contentBytes);
// Entry ক্লোজ করা
tarOut.closeEntry();
System.out.println("TAR ফাইল সফলভাবে তৈরি হয়েছে!");
} catch (IOException e) {
System.err.println("Error writing TAR file: " + e.getMessage());
}
}
}
পার্থক্য এবং একে অপরের সাথে সম্পর্ক:
- TarEntry: একটি
TarEntryএকটি একক ফাইল বা ডিরেক্টরি প্রতিনিধিত্ব করে যা TAR আর্কাইভে সংরক্ষিত থাকে। এটি ফাইলের নাম, সাইজ, টাইমস্ট্যাম্প ইত্যাদি মেটাডেটা ধারণ করে। - TarInputStream: এটি একটি ইনপুট স্ট্রিম যা একটি TAR ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয় এবং
TarEntryএর মধ্যে থাকা প্রতিটি ফাইলের ডেটা বের করে। - TarOutputStream: এটি একটি আউটপুট স্ট্রিম যা TAR ফাইল তৈরি এবং লেখার জন্য ব্যবহৃত হয় এবং
TarEntryএর মাধ্যমে ফাইল বা ডিরেক্টরি গুলি টার ফাইলে যোগ করা হয়।
- TarEntry একটি নির্দিষ্ট TAR এন্ট্রি উপস্থাপন করে (যেমন ফাইল বা ডিরেক্টরি)।
- TarInputStream একটি স্ট্রিম যা TAR ফাইল থেকে ডেটা পড়তে সহায়তা করে।
- TarOutputStream একটি স্ট্রিম যা TAR ফাইলে ডেটা লিখতে সহায়তা করে।
এই তিনটি ক্লাস একত্রে কাজ করে এবং TAR আর্কাইভ তৈরি, ম্যানিপুলেট এবং এক্সট্র্যাক্ট করার জন্য Java তে কার্যকরী উপায় প্রদান করে।
Read more