RandomAccessFile ক্লাস Java I/O প্যাকেজের একটি শক্তিশালী ক্লাস যা ফাইলের নির্দিষ্ট অবস্থানে ডেটা পড়া এবং লেখা করার জন্য ব্যবহৃত হয়। এই ক্লাসটি ফাইলের মধ্যে যেকোনও স্থানে যেকোনো ডেটা পড়তে এবং লেখার ক্ষমতা প্রদান করে, যা FileInputStream বা FileOutputStream এর তুলনায় অনেক বেশি নমনীয় এবং কার্যকরী।
RandomAccessFile ক্লাসটি InputStream এবং OutputStream উভয়ই ইনহেরিট করে, তাই এটি পড়া এবং লেখা উভয় অপারেশন একসাথে সমর্থন করে। এটি binary files বা text files সহ যে কোনও ধরনের ডেটা স্টোরেজ ফাইলের জন্য উপযোগী।
RandomAccessFile Class এর মূল বৈশিষ্ট্য:
- Random Access:
- এই ক্লাসটি random access এর মাধ্যমে ফাইলের যেকোনো অবস্থানে seek করে ডেটা পড়তে এবং লিখতে সহায়ক।
- পড়ার এবং লেখার ক্ষমতা:
- এটি ফাইলের নির্দিষ্ট পজিশনে ডেটা পড়তে এবং লিখতে পারে, যা অন্য কোন ক্লাসের মাধ্যমে করা সম্ভব নয়।
- File Pointer:
seek(long pos)মেথড ব্যবহার করে ফাইল পয়েন্টারকে নির্দিষ্ট অবস্থানে নিয়ে আসা যায়, যেখানে ডেটা পড়া বা লেখা হবে।
- Support for Both Text and Binary Data:
- RandomAccessFile ক্লাস binary এবং text উভয় ধরনের ডেটার জন্য কাজ করে।
RandomAccessFile Class এর গুরুত্বপূর্ণ মেথডসমূহ:
| মেথড | বর্ণনা |
|---|---|
| read() | ফাইল থেকে একটি বাইট পড়ে। |
| read(byte[] b) | বাফারে একাধিক বাইট পড়ে। |
| write(int b) | একটি বাইট ফাইলে লেখে। |
| write(byte[] b) | বাফারে থাকা একাধিক বাইট ফাইলে লেখে। |
| seek(long pos) | ফাইল পয়েন্টারকে নির্দিষ্ট পজিশনে নিয়ে যায়। |
| getFilePointer() | বর্তমান ফাইল পয়েন্টারের অবস্থান রিটার্ন করে। |
| length() | ফাইলের মোট আকার রিটার্ন করে। |
| close() | ফাইল স্ট্রীম বন্ধ করে। |
RandomAccessFile ব্যবহার করে ফাইলের নির্দিষ্ট অবস্থানে পড়া এবং লেখা
ফাইলের নির্দিষ্ট অবস্থানে পড়া এবং লেখা উদাহরণ
import java.io.*;
public class RandomAccessFileExample {
public static void main(String[] args) {
try {
// RandomAccessFile তৈরি করা
RandomAccessFile file = new RandomAccessFile("example.txt", "rw");
// ফাইলের প্রথম 10 বাইট পড়া
byte[] bytes = new byte[10];
file.read(bytes);
System.out.println("First 10 bytes: " + new String(bytes));
// ফাইল পয়েন্টারকে 20 তম বাইটে নিয়ে যাওয়া
file.seek(20);
// 20 তম পজিশনে একটি নতুন ডেটা লেখা
file.write("Hello, this is random access.".getBytes());
// ফাইল পয়েন্টারকে আবার প্রথম অবস্থানে নিয়ে আসা
file.seek(0);
// ফাইলের প্রথম 10 বাইট আবার পড়া
file.read(bytes);
System.out.println("First 10 bytes after write: " + new String(bytes));
// ফাইল বন্ধ করা
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- প্রথমে
RandomAccessFileক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে"rw"মোডে, যার মানে হচ্ছে আমরা ফাইলটি পড়তে এবং লিখতে পারব। read(byte[] b)মেথড ব্যবহার করে ফাইলের প্রথম 10 বাইট পড়া হচ্ছে।seek(long pos)মেথড দ্বারা ফাইল পয়েন্টারকে 20 তম পজিশনে নিয়ে যাওয়া হচ্ছে, এবং সেখানেwrite()মেথডের মাধ্যমে নতুন ডেটা লেখা হচ্ছে।- পরে
seek(0)মেথড ব্যবহার করে ফাইল পয়েন্টারকে প্রথম পজিশনে নিয়ে আসা হচ্ছে এবং ফাইলের প্রথম 10 বাইট আবার পড়া হচ্ছে।
আউটপুট (যদি example.txt ফাইলের মধ্যে কিছু ডেটা থাকে):
First 10 bytes: HelloWorld
First 10 bytes after write: HelloWorld
RandomAccessFile এর সুবিধা:
- ফাইলের নির্দিষ্ট অবস্থানে ডেটা পড়া এবং লেখা:
- RandomAccessFile ক্লাসের মাধ্যমে আমরা যে কোনও অবস্থানে গিয়ে ডেটা পড়তে বা লিখতে পারি, যা FileInputStream বা FileOutputStream এর মাধ্যমে সম্ভব নয়।
- Performance Improvement:
- যখন আপনাকে বড় ফাইলের মধ্যে কিছু নির্দিষ্ট ডেটা পড়তে বা লিখতে হয়, তখন seek() মেথড ব্যবহার করে আপনি শুধুমাত্র সেই অংশে কাজ করতে পারেন, যা পারফরম্যান্স উন্নত করতে সহায়ক।
- Binary and Text Data Support:
- এটি binary এবং text উভয় ধরনের ডেটার জন্য সমর্থন প্রদান করে।
- File Pointer Management:
getFilePointer()এবংseek()মেথডের মাধ্যমে আপনি ফাইলের পয়েন্টার পরিচালনা করতে পারেন এবং যেখানে প্রয়োজন সেখানে ডেটা পড়তে বা লিখতে পারেন।
RandomAccessFile এর সীমাবদ্ধতা:
- Memory Consumption:
- যদিও RandomAccessFile ক্লাস buffering ব্যবহার করে না, তবে large files-এ দ্রুত ডেটা পড়া এবং লেখা করার জন্য অতিরিক্ত memory ব্যবহার হতে পারে।
- File Type:
- RandomAccessFile কেবল binary এবং text ডেটা স্টোরেজের জন্য উপযুক্ত, তবে এটি Object Serialization বা high-level structured file formats এর জন্য উপযুক্ত নয়।
- RandomAccessFile Java তে ফাইলের নির্দিষ্ট অবস্থানে ডেটা পড়া এবং লেখা করার জন্য ব্যবহৃত একটি শক্তিশালী ক্লাস।
- এটি file pointer ব্যবহার করে নির্দিষ্ট অবস্থানে seek করে ডেটা পড়তে এবং লিখতে সক্ষম, যা অন্যান্য ক্লাসের তুলনায় অনেক বেশি নমনীয় এবং কার্যকর।
- ফাইলের binary এবং text উভয় ধরনের ডেটার জন্য এটি কার্যকরী।
RandomAccessFile ক্লাসটি large files বা binary data এর সাথে কাজ করার জন্য অত্যন্ত উপকারী, যেখানে নির্দিষ্ট অবস্থানে দ্রুত ডেটা অ্যাক্সেস করতে হয়।
Read more