JarInputStream এবং JarOutputStream এর মাধ্যমে Jar ফাইল হ্যান্ডল করা

Jar ফাইল এবং Java তে Jar Management - জাভা জিপ (Java Zip) - Java Technologies

257

Java Archive (JAR) ফাইল একটি বিশেষ ধরনের ফাইল যা একাধিক Java ক্লাস ফাইল, মেটা ডেটা, ইমেজ, কনফিগারেশন ফাইল এবং অন্যান্য রিসোর্সকে একত্রিত করে একটি আর্কাইভ ফাইলের মধ্যে সংরক্ষণ করে। JAR ফাইল সাধারণত Java অ্যাপ্লিকেশন বা লাইব্রেরি সমূহের ডিস্ট্রিবিউশন এবং ডিপ্লয়মেন্টের জন্য ব্যবহৃত হয়।

Java তে JarInputStream এবং JarOutputStream ক্লাসগুলি ব্যবহার করে আপনি JAR ফাইল তৈরি এবং এক্সট্র্যাক্ট করতে পারেন। এই দুটি ক্লাস java.util.jar প্যাকেজের অন্তর্গত এবং JAR ফাইলের জন্য বিশেষভাবে ডিজাইন করা হয়েছে।

১. JarInputStream এবং JarOutputStream এর ভূমিকা:

  • JarOutputStream: এটি একটি আউটপুট স্ট্রিম যা JAR ফাইল তৈরি করতে ব্যবহৃত হয়। এটি ফাইলগুলোকে JAR আর্কাইভে লেখে।
  • JarInputStream: এটি একটি ইনপুট স্ট্রিম যা JAR ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়। এটি JAR ফাইলের মধ্যে থাকা ফাইলগুলো এক্সট্র্যাক্ট করতে সাহায্য করে।

২. JarOutputStream ব্যবহার করে JAR ফাইল তৈরি করা

JarOutputStream ব্যবহার করে আপনি একাধিক ফাইলকে একটি JAR ফাইলে সংরক্ষণ করতে পারেন। আপনি একটি নতুন JAR ফাইল তৈরি করতে পারেন এবং এর মধ্যে এক বা একাধিক ফাইল যোগ করতে পারেন।

উদাহরণ: JAR ফাইল তৈরি করা

import java.io.*;
import java.util.jar.*;

public class CreateJarExample {
    public static void main(String[] args) {
        // JAR ফাইলের নাম
        String jarFileName = "example.jar";
        
        try {
            // JarOutputStream তৈরি করা
            FileOutputStream fos = new FileOutputStream(jarFileName);
            JarOutputStream jarOut = new JarOutputStream(fos);

            // ফাইল যোগ করা
            String fileToAdd = "file1.txt";
            FileInputStream fis = new FileInputStream(fileToAdd);
            JarEntry entry = new JarEntry(fileToAdd); // JarEntry তৈরি
            jarOut.putNextEntry(entry);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) >= 0) {
                jarOut.write(buffer, 0, length); // ফাইলের ডেটা JAR ফাইলে লেখা
            }

            // ফাইল লেখা শেষ হলে Entry বন্ধ করা
            jarOut.closeEntry();
            fis.close();
            jarOut.close();

            System.out.println("JAR ফাইল সফলভাবে তৈরি হয়েছে!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. JarOutputStream ব্যবহার করে একটি JAR ফাইল তৈরি করা হয়েছে (example.jar)।
  2. JarEntry ব্যবহার করে একটি ফাইল file1.txt JAR ফাইলে যোগ করা হয়েছে।
  3. write() মেথড দ্বারা ফাইলের ডেটা JAR ফাইলে লেখা হয়েছে।
  4. closeEntry() মেথড দ্বারা JAR এন্ট্রি বন্ধ করা হয়েছে এবং ফাইল লেখার কাজ সম্পন্ন হয়েছে।

৩. JarInputStream ব্যবহার করে JAR ফাইল এক্সট্র্যাক্ট করা

JarInputStream ব্যবহার করে আপনি একটি JAR ফাইল থেকে ফাইলগুলি এক্সট্র্যাক্ট করতে পারেন। এই ক্লাসটি JAR ফাইলের মধ্যে থাকা বিভিন্ন JarEntry পড়তে এবং তাদের ডেটা বের করতে সহায়তা করে।

উদাহরণ: JAR ফাইল থেকে ফাইল এক্সট্র্যাক্ট করা

import java.io.*;
import java.util.jar.*;

public class ExtractJarExample {
    public static void main(String[] args) {
        String jarFileName = "example.jar"; // JAR ফাইলের নাম
        String outputDir = "extracted/"; // ফাইলগুলো এক্সট্র্যাক্ট করার জন্য ডিরেক্টরি

        try {
            // JAR ফাইল থেকে ইনপুট স্ট্রিম তৈরি করা
            FileInputStream fis = new FileInputStream(jarFileName);
            JarInputStream jarIn = new JarInputStream(fis);
            JarEntry entry;

            // প্রতিটি এন্ট্রি (ফাইল) এক্সট্র্যাক্ট করা
            while ((entry = jarIn.getNextJarEntry()) != null) {
                // ফাইলের নাম এবং ডিরেক্টরি তৈরি করা
                File outputFile = new File(outputDir + entry.getName());
                outputFile.getParentFile().mkdirs(); // ডিরেক্টরি তৈরি করা
                FileOutputStream fos = new FileOutputStream(outputFile);

                byte[] buffer = new byte[1024];
                int length;
                // ফাইলের ডেটা এক্সট্র্যাক্ট করা
                while ((length = jarIn.read(buffer)) > 0) {
                    fos.write(buffer, 0, length);
                }

                fos.close();
            }

            jarIn.close();
            fis.close();

            System.out.println("JAR ফাইল সফলভাবে এক্সট্র্যাক্ট হয়েছে!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. JarInputStream ব্যবহার করে JAR ফাইল থেকে ডেটা পড়া হয়েছে।
  2. getNextJarEntry() মেথডের মাধ্যমে JAR ফাইলের প্রতিটি এন্ট্রি (ফাইল) একে একে পড়া হয়েছে।
  3. write() মেথডের মাধ্যমে JAR ফাইলের ডেটা বের করে ডিস্কে সেভ করা হয়েছে।

৪. JarEntry ক্লাস

JarEntry ক্লাসটি একটি JAR ফাইলের মধ্যে একটি এন্ট্রি (ফাইল বা ডিরেক্টরি) প্রতিনিধিত্ব করে। আপনি যখন একটি ফাইল JAR ফাইলে যোগ করেন, তখন JarEntry একটি এন্ট্রি হিসেবে সেটি যোগ করে।

JarEntry ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:

  • getName(): এন্ট্রির নাম (ফাইল বা ডিরেক্টরি) রিটার্ন করে।
  • isDirectory(): যাচাই করে যে, এটি একটি ডিরেক্টরি কি না।
  • getSize(): এন্ট্রির আকার রিটার্ন করে।

৫. Jar ফাইলের সুবিধা এবং ব্যবহার

  • ডিস্ট্রিবিউশন: Java অ্যাপ্লিকেশন বা লাইব্রেরি সমূহের জন্য এটি একটি কম্প্যাক্ট এবং সুবিধাজনক পদ্ধতি।
  • প্লাগইন এবং এক্সটেনশন: JAR ফাইলগুলি Java অ্যাপ্লিকেশনগুলির জন্য প্লাগইন হিসেবে কাজ করতে পারে।
  • কম্প্রেশন: JAR ফাইলগুলি gzip বা bzip2 এর মাধ্যমে কম্প্রেস করা যায় (.jar.gz বা .jar.bz2), যা তাদের স্টোরেজ এবং ডিস্ট্রিবিউশন আরও দক্ষ করে তোলে।

৬. সারাংশ

Java তে JarInputStream এবং JarOutputStream ক্লাসগুলি ব্যবহার করে আপনি সহজেই JAR ফাইল তৈরি এবং এক্সট্র্যাক্ট করতে পারেন। JarOutputStream একটি আউটপুট স্ট্রিম হিসেবে কাজ করে ফাইলগুলো JAR ফাইলে সংরক্ষণ করতে, এবং JarInputStream ইনপুট স্ট্রিম হিসেবে কাজ করে JAR ফাইল থেকে ডেটা পড়তে। এই মেথডগুলো JAR ফাইল তৈরি এবং ব্যবস্থাপনা করার জন্য Java এর একটি শক্তিশালী উপায়।

Content added By
Promotion

Are you sure to start over?

Loading...