উদাহরণ সহ RandomAccessFile এর ব্যবহার

RandomAccessFile Class - জাভা আইও (Java.io Package) - Java Technologies

299

RandomAccessFile হল একটি বিশেষ ধরনের ক্লাস যা Java I/O প্যাকেজের অংশ এবং এটি ফাইলের মধ্যে random access (অর্থাৎ, ফাইলের যেকোনো স্থানে যাওয়া এবং ডেটা পড়া বা লেখা) করার সুযোগ দেয়। এটি byte stream এবং text stream উভয়ই সাপোর্ট করে এবং ফাইলের যে কোনো জায়গায় ডেটা পড়া এবং লেখা করা যায়। এটি বিশেষভাবে যখন ফাইলের বড় আকারে ডেটা থাকে এবং আপনি ফাইলের মধ্যে দ্রুতভাবে কিছু অংশে অ্যাক্সেস করতে চান তখন উপকারী।

RandomAccessFile দিয়ে আপনি ফাইলের মধ্যে ডেটা পড়তে, লিখতে এবং স্থান পরিবর্তন করতে পারেন। এর মাধ্যমে seeking, reading, এবং writing ফাইলের বিভিন্ন অংশে সম্ভব।

RandomAccessFile এর ভূমিকা:

  1. Random Access: আপনি যে কোনও স্থানে ফাইলের ডেটা অ্যাক্সেস করতে পারবেন।
  2. File Pointer: seek() মেথড ব্যবহার করে আপনি ফাইলের পয়েন্টারকে যে কোনো স্থানে স্থানান্তর করতে পারবেন।
  3. Reading and Writing: read(), write(), readInt(), writeInt() সহ বিভিন্ন মেথডের মাধ্যমে ডেটা পড়া এবং লেখা যায়।
  4. Mode: ফাইলটি খুলতে r, rw, rws, rwd এই ধরণের মোড ব্যবহার করা যেতে পারে:
    • r: শুধুমাত্র পড়া মোড।
    • rw: পড়া এবং লেখা মোড।
    • rws এবং rwd: ডেটা ফাইল সিস্টেমে অ্যাটমিকভাবে সেভ করা।

RandomAccessFile এর মেথড:

মেথডবর্ণনা
seek(long pos)ফাইল পয়েন্টারকে নির্দিষ্ট অবস্থানে স্থানান্তর করে।
read()এক বাইট পড়ার জন্য।
read(byte[] b)বাইট অ্যারে থেকে ডেটা পড়ার জন্য।
write(int b)এক বাইট লিখে।
write(byte[] b)বাইট অ্যারে থেকে ডেটা লেখে।
readInt()একটি পূর্ণসংখ্যা পড়ার জন্য।
writeInt(int v)একটি পূর্ণসংখ্যা লেখার জন্য।
length()ফাইলের আকার রিটার্ন করে।
getFilePointer()ফাইল পয়েন্টারের বর্তমান অবস্থান রিটার্ন করে।
close()ফাইল বন্ধ করে।

RandomAccessFile এর উদাহরণ:

১. ফাইলের মধ্যে ডেটা লেখা এবং পড়া

এই উদাহরণে আমরা RandomAccessFile ব্যবহার করে একটি ফাইলে ডেটা লিখব এবং তারপর সেই ফাইলের নির্দিষ্ট স্থানে গিয়ে ডেটা পড়ব।

import java.io.*;

public class RandomAccessFileExample {
    public static void main(String[] args) {
        try {
            // র্যান্ডম অ্যাক্সেস ফাইল তৈরি
            RandomAccessFile file = new RandomAccessFile("example.dat", "rw");

            // ফাইলের প্রথমে একটি String লিখি
            file.writeUTF("Hello, World!");

            // ফাইলের শেষে একটি Integer লিখি
            file.writeInt(12345);

            // ফাইলের শুরুতে ফিরে গিয়ে String পড়ি
            file.seek(0);  // ফাইলের প্রথমে ফিরে যাবো
            System.out.println("String: " + file.readUTF());

            // এখন Integer পড়বো
            file.seek(file.length() - 4);  // ফাইলের শেষে গিয়ে Integer পড়বো
            System.out.println("Integer: " + file.readInt());

            file.close();  // ফাইল বন্ধ করা
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • প্রথমে writeUTF() মেথড দ্বারা একটি স্ট্রিং "Hello, World!" ফাইলে লেখা হচ্ছে।
  • পরে writeInt() মেথড দ্বারা একটি পূর্ণসংখ্যা 12345 ফাইলে লেখা হচ্ছে।
  • seek() মেথডের মাধ্যমে আমরা ফাইলের পয়েন্টারকে একটি নির্দিষ্ট অবস্থানে পাঠিয়ে ডেটা পড়ছি।
    • প্রথমে আমরা seek(0) দিয়ে ফাইলের শুরুতে গিয়ে স্ট্রিংটি পড়ছি।
    • তারপর seek(file.length() - 4) দিয়ে ফাইলের শেষে গিয়ে ইন্টিজারটি পড়ছি (এখানে 4 হল ইন্টিজারের আকার, যা 4 বাইট সমান)।

আউটপুট:

String: Hello, World!
Integer: 12345

২. ফাইলের মধ্যে ডেটা আপডেট করা

এখানে আমরা একটি RandomAccessFile ব্যবহার করে একটি ফাইলে কিছু ডেটা আপডেট করব।

import java.io.*;

public class RandomAccessFileUpdateExample {
    public static void main(String[] args) {
        try {
            RandomAccessFile file = new RandomAccessFile("updateExample.dat", "rw");

            // ফাইলের মধ্যে কিছু ডেটা লিখি
            file.writeUTF("Initial data");
            file.writeInt(100);

            // ফাইলের প্রথম স্থানে গিয়ে ডেটা আপডেট করি
            file.seek(0); // ফাইলের প্রথমে ফিরে যাওয়া
            file.writeUTF("Updated data"); // নতুন ডেটা লিখা

            // ফাইলের মধ্যে ডেটা পড়ি
            file.seek(0);
            System.out.println("Updated String: " + file.readUTF());
            file.seek(file.length() - 4); // ইন্টিজার পড়া
            System.out.println("Integer: " + file.readInt());

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

ব্যাখ্যা:

  • প্রথমে "Initial data" এবং 100 ফাইলে লেখা হচ্ছে।
  • তারপর seek(0) ব্যবহার করে ফাইলের শুরুতে গিয়ে স্ট্রিং "Updated data" দিয়ে আপডেট করা হচ্ছে।
  • ফাইলের পরে একটি int পড়া হচ্ছে।

আউটপুট:

Updated String: Updated data
Integer: 100

RandomAccessFile এর সুবিধা:

  1. Random Access: ফাইলের যেকোনো স্থানে ডেটা পড়তে এবং লেখার সুবিধা।
  2. Efficient File Operations: বড় ফাইলের মধ্যে দ্রুত ডেটা পড়া এবং লেখা যায়।
  3. File Pointer: seek() মেথড ব্যবহার করে ফাইল পয়েন্টারকে যেকোনো স্থানে সরানো যায়।
  4. Text এবং Binary Data: RandomAccessFile টেক্সট এবং বাইনারি উভয় ধরনের ডেটার জন্য কাজ করে।

RandomAccessFile এর সীমাবদ্ধতা:

  1. Complexity: সাধারণ FileInputStream বা FileOutputStream এর তুলনায় কিছুটা জটিল, কারণ আপনি ফাইলের মধ্যে পয়েন্টার পরিবর্তন করতে পারবেন।
  2. File Size Limit: খুব বড় ফাইলের ক্ষেত্রে কর্মক্ষমতা কিছুটা ধীর হতে পারে যদি খুব বেশি র্যান্ডম অ্যাক্সেস করা হয়।
  3. Non-Buffered: RandomAccessFile ক্লাসটি buffered নয়, অর্থাৎ এটি প্রতিটি লেখার জন্য সিস্টেম কল করে, যা কিছু ক্ষেত্রে ধীর হতে পারে।

  • RandomAccessFile ক্লাসটি Java-তে একটি শক্তিশালী টুল, যা আপনাকে ফাইলের মধ্যে random access সুবিধা প্রদান করে, অর্থাৎ আপনি ফাইলের যেকোনো অংশে সরাসরি পৌঁছাতে পারবেন।
  • এটি seek() মেথডের মাধ্যমে ফাইলের পয়েন্টার নিয়ন্ত্রণ করতে সহায়ক এবং ডেটা দ্রুত পড়তে এবং লিখতে সাহায্য করে।
  • যদিও এটি কিছুটা জটিল হতে পারে এবং পারফরম্যান্সের কিছু সীমাবদ্ধতা থাকতে পারে, তবে RandomAccessFile ক্লাসটি বড় এবং জটিল ফাইল ম্যানিপুলেশনের জন্য খুবই উপকারী।
Content added By
Promotion

Are you sure to start over?

Loading...