Zip এবং Tar (Tape Archive) দুটি আলাদা আর্কাইভ ফাইল ফরম্যাট যা ফাইল কম্প্রেশন এবং আর্কাইভ করার জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। Java তে এই দুটি ফাইল ফরম্যাটের ব্যবহারে কিছু ভিন্নতা রয়েছে। চলুন, Zip এবং Tar ফরম্যাটের মধ্যে পার্থক্য এবং তাদের ব্যবহারের ক্ষেত্রে দিকনির্দেশনা নিয়ে আলোচনা করি।
1. Zip এবং Tar ফাইল ফরম্যাটের পার্থক্য
| বৈশিষ্ট্য | Zip | Tar |
|---|---|---|
| কম্প্রেশন | Zip ফরম্যাট স্বয়ংক্রিয়ভাবে ফাইল কম্প্রেশন করে। | Tar ফরম্যাট শুধুমাত্র আর্কাইভ ফাইল তৈরি করে, কম্প্রেশন করনা। কম্প্রেশন করার জন্য অন্য টুল (যেমন gzip, bzip2) ব্যবহার করতে হয়। |
| ফাইল আর্কাইভ | Zip ফরম্যাট একাধিক ফাইল এবং ডিরেক্টরি একসাথে কম্প্রেস এবং আর্কাইভ করতে পারে। | Tar শুধু ফাইল এবং ডিরেক্টরি আর্কাইভ করতে পারে, তবে এটি কম্প্রেশন সক্ষম নয় (gzip, bzip2 এর সাথে যুক্ত করা যায়)। |
| ফাইলের গঠন | Zip ফাইলের মধ্যে প্রতিটি ফাইল আলাদা করে কম্প্রেস করা হয়। | Tar ফাইল একক ব্লকে আর্কাইভ হয়, এবং এতে সব ফাইল একত্রে থাকে। |
| প্ল্যাটফর্ম কম্প্যাটিবিলিটি | Zip ফাইল উইন্ডোজ, লিনাক্স, ম্যাক সহ বিভিন্ন প্ল্যাটফর্মে সমর্থিত। | Tar ফাইল মূলত ইউনিক্স বা লিনাক্স সিস্টেমে ব্যবহৃত হয়, তবে WinRAR বা 7-Zip এর মাধ্যমে উইন্ডোজেও খুলতে পারা যায়। |
| ফাইল এক্সটেনশন | .zip | .tar, .tar.gz, .tgz, .tar.bz2, .tar.xz |
| ফাইল ম্যানিপুলেশন | Zip ফাইলের মধ্যে প্রতিটি ফাইল পৃথকভাবে অ্যাক্সেস এবং ম্যানিপুলেট করা যায়। | Tar ফাইল একে একে পুরো আর্কাইভের সাথে কাজ করা হয়। |
2. Zip এবং Tar ফাইলের ব্যবহারের ক্ষেত্রে দিকনির্দেশনা
Zip ফাইলের ব্যবহারের ক্ষেত্রে দিকনির্দেশনা:
- কম্প্রেশন প্রয়োজন: যখন আপনাকে ফাইল কম্প্রেস করতে হয় এবং একটি একক আর্কাইভ ফাইল তৈরি করতে হয়, তখন Zip সবচেয়ে ভালো পছন্দ। এতে স্বয়ংক্রিয়ভাবে কম্প্রেশন হয় এবং ফাইলগুলো আলাদা আলাদা কম্প্রেস হতে পারে।
- বিভিন্ন প্ল্যাটফর্মে ব্যবহার: Zip ফাইল উইন্ডোজ, লিনাক্স এবং ম্যাক OS তে সহজে খুলতে এবং তৈরি করতে পারে। তাই, যদি আপনি একাধিক প্ল্যাটফর্মে কাজ করেন, তখন Zip একটি ভাল পছন্দ।
- সহজ ব্যবহারের জন্য: Zip ফাইলের জন্য অনেক অ্যাপ্লিকেশন রয়েছে (যেমন WinZip, 7-Zip, macOS এর ইনবিল্ট ইউটিলিটি), যা ফাইল ম্যানিপুলেশন যেমন এক্সট্র্যাক্ট, ফাইল যোগ করা, ফাইল মুছে ফেলা সহজ করে তোলে।
Tar ফাইলের ব্যবহারের ক্ষেত্রে দিকনির্দেশনা:
- কেবল আর্কাইভ তৈরি করার জন্য: যদি আপনার মূল উদ্দেশ্য শুধুমাত্র ফাইলগুলো একত্রিত করা হয়, তবে Tar ফাইল ব্যবহার করা যায়, কারণ এটি কম্প্রেশন না করে কেবল ফাইল আর্কাইভ করে।
- লিনাক্স বা ইউনিক্স সিস্টেমে ব্যবহারের জন্য: Tar ফাইল মূলত লিনাক্স এবং ইউনিক্স সিস্টেমে ব্যবহৃত হয়। এই সিস্টেমগুলিতে কম্প্রেশন ফিচার অন্তর্ভুক্ত করা হয় (যেমন
tar.gzবাtar.bz2), যা Tar আর্কাইভ ফাইলের মাধ্যমে ব্যবহৃত হয়। - এন্টারপ্রাইজ সিস্টেমে ব্যবহারের জন্য: অনেক সিস্টেম অ্যাডমিনিস্ট্রেটর এবং ডেভেলপার Tar ফাইল ফরম্যাট ব্যবহার করে বড় আর্কাইভ তৈরি করতে পছন্দ করেন, কারণ এটি খুবই দক্ষ এবং দ্রুত।
Tar ফাইলের কম্প্রেশন (gzip, bzip2)
Tar ফাইল কম্প্রেশন করার জন্য বিভিন্ন টুল ব্যবহৃত হয়। যেমন:
- gzip:
tar -czf archive.tar.gz folder/(Tar ফাইলকে gzip দিয়ে কম্প্রেস করা) - bzip2:
tar -cjf archive.tar.bz2 folder/(Tar ফাইলকে bzip2 দিয়ে কম্প্রেস করা)
এখন, tar.gz বা tar.bz2 ফাইল ব্যবহার করা খুবই জনপ্রিয়, যেখানে প্রথমে tar দিয়ে আর্কাইভ তৈরি করা হয়, এবং পরে gzip বা bzip2 দিয়ে কম্প্রেস করা হয়।
3. Java তে Zip এবং Tar ফাইল ম্যানিপুলেশন
Zip ফাইলের জন্য Java Code Example (Extracting)
import java.io.*;
import java.util.zip.*;
public class ZipExtractExample {
public static void main(String[] args) {
String zipFilePath = "example.zip"; // Zip ফাইল পাথ
String outputDir = "output/"; // আউটপুট ডিরেক্টরি
try (ZipFile zipFile = new ZipFile(zipFilePath)) {
zipFile.stream().forEach(entry -> {
File outputFile = new File(outputDir + entry.getName());
outputFile.getParentFile().mkdirs();
try (InputStream in = zipFile.getInputStream(entry);
OutputStream out = new FileOutputStream(outputFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
Tar ফাইলের জন্য Java Code Example (Using Apache Commons Compress)
Tar ফাইলের জন্য Java তে Apache Commons Compress লাইব্রেরি ব্যবহার করা হয়। এখানে TarArchiveInputStream ব্যবহার করা হয়।
import org.apache.commons.compress.archivers.tar.*;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
public class TarExtractExample {
public static void main(String[] args) {
String tarFilePath = "example.tar"; // Tar ফাইল পাথ
String outputDir = "output/"; // আউটপুট ডিরেক্টরি
try (InputStream fileInputStream = new FileInputStream(tarFilePath);
TarArchiveInputStream tarInputStream = new TarArchiveInputStream(fileInputStream)) {
TarArchiveEntry entry;
while ((entry = tarInputStream.getNextTarEntry()) != null) {
File outputFile = new File(outputDir + entry.getName());
outputFile.getParentFile().mkdirs();
try (OutputStream out = new FileOutputStream(outputFile)) {
IOUtils.copy(tarInputStream, out);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
- Zip ফাইল ফরম্যাট কম্প্রেশন এবং আর্কাইভ করার জন্য খুবই জনপ্রিয় এবং ব্যবহারিক। এটি সহজেই একাধিক প্ল্যাটফর্মে সমর্থিত এবং ডেটার সংরক্ষণ এবং এক্সট্রাকশনের ক্ষেত্রে দ্রুত এবং সহজ।
- Tar ফাইল ফরম্যাট মূলত লিনাক্স এবং ইউনিক্স সিস্টেমে ব্যবহৃত হয় এবং এটি একক আর্কাইভ ফাইল তৈরি করে। কম্প্রেশন করার জন্য
gzipবাbzip2ব্যবহার করা হয়।
তবে, কোন ফাইল ফরম্যাট ব্যবহার করবেন তা নির্ভর করবে আপনার ব্যবহারের প্রয়োজন এবং সিস্টেমের ওপর (উইন্ডোজ বনাম লিনাক্স)।
Read more