Skill

ফাইলের নির্দিষ্ট অবস্থানে পড়া এবং লেখা

RandomAccessFile Class - জাভা টাপল (Java Tuples) - Java Technologies

336

RandomAccessFile জাভাতে একটি শক্তিশালী ক্লাস যা ফাইলের মধ্যে নির্দিষ্ট অবস্থানে ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়। এটি আপনাকে ফাইলের যেকোনো অংশে সরাসরি অ্যাক্সেস করতে দেয়, অর্থাৎ random access

RandomAccessFile ফাইলের মধ্যে যে কোনো স্থান থেকে ডেটা পড়তে এবং যে কোনো স্থান থেকে ডেটা লেখার ক্ষমতা প্রদান করে, যা FileInputStream এবং FileOutputStream এর চেয়ে অনেক বেশি কার্যকরী।


RandomAccessFile ক্লাসের বৈশিষ্ট্য

  1. Random Access: ফাইলের যে কোন অবস্থান থেকে ডেটা পড়া এবং লেখা সম্ভব।
  2. Read and Write Mode: ফাইল পড়া এবং লেখার জন্য দুইটি মোড আছে:
    • r (read mode): শুধুমাত্র পড়তে পারা।
    • rw (read-write mode): পড়া এবং লেখা উভয়ই করা যায়।
  3. File Pointer: ফাইলের ভেতরে একটি পয়েন্টার থাকে যা আপনার বর্তমান অবস্থান নির্দেশ করে।
  4. Seek Method: seek() মেথড ব্যবহার করে আপনি ফাইলের একটি নির্দিষ্ট অবস্থানে চলে যেতে পারেন।

RandomAccessFile ক্লাসের সাধারণ পদ্ধতি

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

ফাইলের নির্দিষ্ট অবস্থানে পড়া এবং লেখা উদাহরণ

উদাহরণ ১: নির্দিষ্ট অবস্থানে ডেটা পড়া

import java.io.RandomAccessFile;
import java.io.IOException;

public class ReadFromSpecificPosition {
    public static void main(String[] args) {
        try (RandomAccessFile file = new RandomAccessFile("example.txt", "r")) {
            // ফাইলের 10 তম বাইট থেকে পড়া শুরু
            file.seek(10);

            // 10 তম বাইট থেকে একটি পূর্ণসংখ্যা পড়া
            int data = file.readInt();
            System.out.println("Data read from position 10: " + data);

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

ব্যাখ্যা:

  • seek(10): এটি ফাইলের 10 তম বাইটে পয়েন্টার সেট করে। এরপর readInt() ব্যবহার করে সেখানে একটি পূর্ণসংখ্যা পড়া হয়।

উদাহরণ ২: নির্দিষ্ট অবস্থানে ডেটা লেখা

import java.io.RandomAccessFile;
import java.io.IOException;

public class WriteToSpecificPosition {
    public static void main(String[] args) {
        try (RandomAccessFile file = new RandomAccessFile("example.txt", "rw")) {
            // ফাইলের 20 তম বাইটে লেখা শুরু
            file.seek(20);

            // সেখানে একটি পূর্ণসংখ্যা লেখা
            file.writeInt(12345);
            System.out.println("Data written to position 20.");

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

ব্যাখ্যা:

  • seek(20): ফাইলের 20 তম অবস্থানে পয়েন্টার সেট করা হয়েছে।
  • writeInt(12345): 20 তম অবস্থানে পূর্ণসংখ্যা 12345 লেখা হয়েছে।

উদাহরণ ৩: ফাইলের মধ্যে ডেটা পড়া এবং লেখা (Read and Write in the Same File)

import java.io.RandomAccessFile;
import java.io.IOException;

public class ReadAndWriteAtTheSameTime {
    public static void main(String[] args) {
        try (RandomAccessFile file = new RandomAccessFile("example.txt", "rw")) {
            // প্রথমে কিছু ডেটা লেখা
            file.writeUTF("Hello, this is the first part.");
            file.writeInt(100);

            // ফাইলের 10 তম বাইটে পয়েন্টার সেট করা
            file.seek(10);

            // ফাইল থেকে ডেটা পড়া
            String readData = file.readUTF();
            int number = file.readInt();

            System.out.println("Read data: " + readData);
            System.out.println("Read number: " + number);

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

ব্যাখ্যা:

  • প্রথমে writeUTF() এবং writeInt() মেথড ব্যবহার করে কিছু ডেটা লেখা হয়েছে।
  • পরে seek(10) ব্যবহার করে 10 তম বাইটে পয়েন্টার সেট করা হয়েছে এবং readUTF() এবং readInt() দিয়ে ডেটা পড়া হয়েছে।

RandomAccessFile ব্যবহার করার সুবিধা

  1. ফাইলের যেকোনো অংশে দ্রুত অ্যাক্সেস:
    • seek() মেথডের মাধ্যমে ফাইলের নির্দিষ্ট অবস্থানে চলে যাওয়া এবং সেখানে পড়া বা লেখা করা যায়, যা sequential access এর চেয়ে অনেক দ্রুত।
  2. বড় ডেটা সেটের জন্য উপযুক্ত:
    • RandomAccessFile বড় ডেটা ফাইল বা ডেটাবেসের মতো অ্যাপ্লিকেশনে ব্যবহৃত হতে পারে যেখানে দ্রুত নির্দিষ্ট অবস্থান থেকে ডেটা পড়া বা লেখা প্রয়োজন।
  3. ফাইলের মধ্যকার ডেটা আপডেট করা:
    • একাধিক অংশের মধ্যে ডেটা আপডেট করা সম্ভব, যেখানে আপনি ফাইলের মাঝে কিছু অংশ পরিবর্তন করতে পারেন, যেমন ডেটাবেসে ইনপুটের অংশ আপডেট করা।

RandomAccessFile এর কিছু সীমাবদ্ধতা

  1. ফাইলের বড় আকার:
    • এটি ছোট এবং মাঝারি আকারের ফাইলের জন্য আদর্শ, তবে খুব বড় ফাইলের জন্য এটি ভালো পারফরম্যান্স নাও দিতে পারে।
  2. Concurrency Issues:
    • একাধিক থ্রেডের মাধ্যমে একই RandomAccessFile ব্যবহার করার সময় thread safety নিশ্চিত করা জরুরি। একাধিক থ্রেড একই সময়ে একই পয়েন্টারে লিখলে সমস্যা সৃষ্টি হতে পারে।

RandomAccessFile ফাইল থেকে random access সুবিধা প্রদান করে, যেখানে আপনি যেকোনো অবস্থান থেকে ডেটা পড়তে এবং লিখতে পারেন। এটি দ্রুত এবং কার্যকর, বিশেষ করে যখন আপনাকে ফাইলের নির্দিষ্ট অংশে কাজ করতে হয়। Tuples ব্যবহার করে ডেটা পড়া বা লেখার জন্য এই ফিচারটি অনেক বেশি কার্যকরী হতে পারে, কারণ Tuples ডেটাকে খুবই কার্যকরভাবে সংগঠিত এবং ব্যবস্থাপনা করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...