File Handling C++ প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ দিক, যা প্রোগ্রামারদের ফাইল থেকে ডেটা পড়া, ফাইলে ডেটা লেখা এবং ফাইলে ডেটা সংশোধন করতে সহায়তা করে। C++ স্ট্যান্ডার্ড লাইব্রেরিতে ফাইল হ্যান্ডলিংয়ের জন্য std::fstream ক্লাস সরবরাহ করা হয়েছে, যা ifstream (ইনপুট ফাইল স্ট্রিম), ofstream (আউটপুট ফাইল স্ট্রিম), এবং fstream (দ্বিমুখী ফাইল স্ট্রিম) অন্তর্ভুক্ত করে।
File Handling এর জন্য std::fstream এর ব্যবহার
C++ এ std::fstream এর মাধ্যমে প্রোগ্রাম থেকে ফাইল পড়া এবং ফাইলে লেখা করা যায়। std::fstream ফাইল হ্যান্ডলিংয়ের জন্য একটি বহুমুখী ক্লাস, যা ইনপুট ও আউটপুট উভয় কাজ করতে পারে।
প্রধান স্ট্রিম ক্লাসসমূহ
- std::ifstream: ফাইল থেকে পড়ার জন্য ব্যবহৃত হয়।
- std::ofstream: ফাইলে লেখার জন্য ব্যবহৃত হয়।
- std::fstream: ফাইল থেকে পড়া এবং ফাইলে লেখার জন্য ব্যবহৃত হয়।
১. ফাইলে লেখা (Writing to a File) - std::ofstream
std::ofstream ফাইলের সাথে সংযোগ স্থাপন করে এবং ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। ফাইলটি যদি না থাকে, তবে এটি নতুন একটি ফাইল তৈরি করে।
উদাহরণ:
#include <iostream>
#include <fstream> // ofstream অন্তর্ভুক্ত করার জন্য
int main() {
std::ofstream file("example.txt"); // ফাইল খোলা
if (file.is_open()) { // ফাইলটি সফলভাবে খুললে
file << "Hello, File Handling!\n";
file << "Writing data to a file.\n";
file.close(); // ফাইল বন্ধ করা
std::cout << "Data written to file successfully." << std::endl;
} else {
std::cout << "Failed to open file." << std::endl;
}
return 0;
}আউটপুট:
Data written to file successfully.ফাইল example.txt এ নিচের মত ডেটা লেখা থাকবে:
Hello, File Handling!
Writing data to a file.২. ফাইল থেকে পড়া (Reading from a File) - std::ifstream
std::ifstream ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়। ফাইলটি যদি না থাকে, তবে এটি খোলার প্রচেষ্টা ব্যর্থ হয়।
উদাহরণ:
#include <iostream>
#include <fstream> // ifstream অন্তর্ভুক্ত করার জন্য
#include <string>
int main() {
std::ifstream file("example.txt"); // ফাইল খোলা
if (file.is_open()) { // ফাইলটি সফলভাবে খুললে
std::string line;
while (getline(file, line)) { // ফাইল থেকে লাইন বাই লাইন পড়া
std::cout << line << std::endl;
}
file.close(); // ফাইল বন্ধ করা
} else {
std::cout << "Failed to open file." << std::endl;
}
return 0;
}উপরে example.txt ফাইল থেকে প্রতিটি লাইন পড়া হয়েছে এবং কনসোলে প্রদর্শিত হয়েছে।
৩. ফাইলে পড়া ও লেখা (Reading and Writing) - std::fstream
std::fstream ক্লাসটি ইনপুট এবং আউটপুট উভয় কাজ করতে সক্ষম, অর্থাৎ এটি একই সাথে ফাইলে ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়। এটি ফাইল খুলতে std::ios::in এবং std::ios::out মোডে ব্যবহার করা হয়।
উদাহরণ:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::fstream file("example.txt", std::ios::in | std::ios::out | std::ios::app); // ফাইল পড়া ও লেখার মোডে খোলা
if (file.is_open()) {
// ফাইলে লেখা
file << "Appending more data.\n";
// ফাইলের শুরুতে ফিরে যাওয়া
file.seekg(0);
// ফাইল থেকে পড়া
std::string line;
while (getline(file, line)) {
std::cout << line << std::endl;
}
file.close(); // ফাইল বন্ধ করা
} else {
std::cout << "Failed to open file." << std::endl;
}
return 0;
}এখানে example.txt ফাইলে নতুন ডেটা যোগ করা হয়েছে এবং এর সব ডেটা কনসোলে প্রিন্ট করা হয়েছে।
ফাইল মোডের প্রধান বৈশিষ্ট্য
| মোড | বর্ণনা |
|---|---|
std::ios::in | ফাইল থেকে পড়ার জন্য ব্যবহার করা হয়। |
std::ios::out | ফাইলে লেখার জন্য ব্যবহার করা হয়। |
std::ios::app | ফাইলে শেষে নতুন ডেটা যোগ করার জন্য ব্যবহৃত হয়। |
std::ios::trunc | ফাইলের পুরানো ডেটা মুছে ফেলে নতুন ডেটা যোগ করে। |
std::ios::ate | ফাইল খুললে কার্সর শেষ অবস্থানে চলে যায়। |
std::ios::binary | বাইনারি মোডে ফাইল খুলতে ব্যবহৃত হয়। |
ফাইল স্ট্রিম চেক করার ফাংশন
is_open(): চেক করে যে ফাইলটি সফলভাবে খোলা হয়েছে কিনা।eof(): ফাইলের শেষ পর্যন্ত পৌঁছানোর জন্য ব্যবহৃত হয়। এটিtrueরিটার্ন করে যদি ফাইলের শেষে পৌঁছে যায়।fail(): ফাইল অপারেশন ব্যর্থ হলেtrueরিটার্ন করে।
উদাহরণ:
#include <iostream>
#include <fstream>
int main() {
std::ifstream file("example.txt");
if (!file) {
std::cerr << "Error: Could not open file." << std::endl;
return 1;
}
while (!file.eof()) {
std::string line;
getline(file, line);
std::cout << line << std::endl;
}
file.close();
return 0;
}সংক্ষেপে
std::fstream এবং এর সাথে সম্পর্কিত std::ifstream ও std::ofstream ক্লাসের মাধ্যমে C++ এ ফাইল হ্যান্ডলিং খুবই সহজ। এর মাধ্যমে ফাইল থেকে পড়া, ফাইলে লেখা, এবং ফাইল সংশোধন করা যায়। এই ক্লাসগুলোর সাহায্যে ফাইলের ইনপুট এবং আউটপুট অপারেশন কার্যকরভাবে পরিচালনা করা যায়, যা বড় ডেটা বা ফাইল ম্যানেজমেন্টের ক্ষেত্রে অত্যন্ত কার্যকর।
Read more