ZipOutputStream Java তে একটি OutputStream যা ফাইল বা ডেটাকে ZIP ফরম্যাটে কম্প্রেস করে। তবে, ZipOutputStream নিজে থেকে কম্প্রেশন লেভেল কনফিগার করার কোনো সরাসরি পদ্ধতি প্রদান করে না। তবে, Java তে Deflater ক্লাস ব্যবহার করে কম্প্রেশন লেভেল কনফিগার করা সম্ভব, কারণ ZipOutputStream এর মাধ্যমে ফাইল লিখতে গিয়ে Deflater কম্প্রেশন অ্যালগরিদম ব্যবহৃত হয়।
Deflater ক্লাসের মাধ্যমে আপনি ZIP ফাইলের কম্প্রেশন লেভেল নির্ধারণ করতে পারেন। কম্প্রেশন লেভেল এর মান 0 থেকে 9 পর্যন্ত হতে পারে:
- 0: No compression (কম্প্রেশন হবে না)
- 1: Best speed (সর্বোত্তম গতি, কম্প্রেশন কম হবে)
- 9: Best compression (সর্বোত্তম কম্প্রেশন, তবে এটি গতি কমাবে)
ZipOutputStream এর মাধ্যমে Compression Level কনফিগার করার পদ্ধতি:
Deflaterক্লাস ব্যবহার করে কম্প্রেশন লেভেল কনফিগার করুন।ZipOutputStreamএর সাথেDeflaterসেট করুন।
নমুনা কোড:
import java.io.*;
import java.util.zip.*;
public class ZipWithCompressionLevel {
public static void main(String[] args) {
try {
// ZIP আউটপুট স্ট্রিম তৈরি
FileOutputStream fos = new FileOutputStream("example.zip");
// Deflater দিয়ে কম্প্রেশন লেভেল সেট করা (1 থেকে 9)
Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION); // সর্বোচ্চ কম্প্রেশন
ZipOutputStream zos = new ZipOutputStream(fos);
zos.setLevel(Deflater.BEST_COMPRESSION); // বা `Deflater.NO_COMPRESSION` ইত্যাদি
// ZIP এ একটি নতুন এন্ট্রি তৈরি
ZipEntry entry = new ZipEntry("sample.txt");
zos.putNextEntry(entry);
// কিছু ডেটা লিখা
String data = "This is a sample text file to be compressed!";
zos.write(data.getBytes());
zos.closeEntry(); // এন্ট্রি বন্ধ করা
zos.close(); // ZIP স্ট্রিম বন্ধ করা
System.out.println("ZIP file created with best compression.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- Deflater ক্লাস:
Deflaterক্লাস কম্প্রেশন অ্যালগরিদমের জন্য ব্যবহৃত হয়, এবং এর মাধ্যমে আপনি কম্প্রেশন লেভেল নির্ধারণ করতে পারেন।Deflater.BEST_COMPRESSION: সর্বোচ্চ কম্প্রেশন লেভেল।Deflater.NO_COMPRESSION: কোন কম্প্রেশন নেই।Deflater.BEST_SPEED: সর্বোত্তম গতি।
- ZipOutputStream:
ZipOutputStreamএর মাধ্যমে ফাইলকে ZIP ফরম্যাটে রচনা করা হয়, এবংsetLevel()মেথড দিয়ে কম্প্রেশন লেভেল নির্ধারণ করা হয়।
ZipOutputStream Compression Level এর বিভিন্ন মান:
Deflater.NO_COMPRESSION: কোনো কম্প্রেশন হবে না।Deflater.BEST_SPEED: গতি সর্বোচ্চ, কম্প্রেশন কম হবে।Deflater.BEST_COMPRESSION: সর্বোচ্চ কম্প্রেশন, গতি কম হবে।Deflater.DEFAULT_COMPRESSION: ডিফল্ট কম্প্রেশন লেভেল।
Java তে ZipOutputStream এর মাধ্যমে কম্প্রেশন লেভেল কনফিগার করা সম্ভব Deflater ক্লাসের মাধ্যমে। ZipOutputStream এ setLevel() মেথডের মাধ্যমে আপনি ZIP ফাইলের কম্প্রেশন লেভেল নিয়ন্ত্রণ করতে পারেন এবং এটি ডেটা কম্প্রেস করার সময় গতি এবং কম্প্রেশনের মধ্যে একটি ব্যালেন্স তৈরি করতে সাহায্য করে।
Read more