C++ এ binary এবং text ফাইলের সাথে কাজ করার জন্য বিভিন্ন ফাংশন এবং লাইব্রেরি সরঞ্জাম সরবরাহ করা হয়েছে। Text files সাধারণত পাঠযোগ্য ফাইল হয় যেখানে ডেটা মানুষের জন্য পড়তে সক্ষম হয় (যেমন .txt, .csv ইত্যাদি), আর Binary files সেগুলো যেখানে ডেটা সরাসরি বাইনারি ফর্ম্যাটে সঞ্চিত থাকে এবং সেগুলো মানুষের কাছে পাঠযোগ্য নয় (যেমন ইমেজ, অডিও, অথবা অন্যান্য ফাইল ফরম্যাটে)।
C++ এ ফাইল রিডিং, রাইটিং, এবং ম্যানিপুলেশনের জন্য <fstream> লাইব্রেরি ব্যবহৃত হয়, যা std::ifstream, std::ofstream, এবং std::fstream ক্লাস প্রদান করে। নিচে text files এবং binary files এর সাথে কাজ করার কিছু উদাহরণ দেওয়া হলো।
১. Text File এর সাথে কাজ করা
Text files এর সাথে কাজ করতে std::ifstream (input file stream) এবং std::ofstream (output file stream) ক্লাস ব্যবহার করা হয়। এগুলো ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা সহজ করে।
উদাহরণ: Text File এ লেখা
#include <iostream>
#include <fstream>
#include <string>
int main() {
// ফাইল তৈরি বা খোলা
std::ofstream outFile("example.txt");
if (outFile.is_open()) {
// ফাইলে লেখা
outFile << "Hello, World!" << std::endl;
outFile << "This is a text file example." << std::endl;
outFile.close(); // ফাইল বন্ধ
std::cout << "Data written to file successfully." << std::endl;
} else {
std::cout << "Unable to open file for writing." << std::endl;
}
return 0;
}আউটপুট:
Data written to file successfully.এখানে, "example.txt" ফাইলে "Hello, World!" এবং "This is a text file example." লেখা হয়েছে।
উদাহরণ: Text File থেকে পড়া
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream inFile("example.txt");
if (inFile.is_open()) {
std::string line;
while (getline(inFile, line)) {
std::cout << line << std::endl; // ফাইলের প্রতিটি লাইন প্রিন্ট করা
}
inFile.close(); // ফাইল বন্ধ
} else {
std::cout << "Unable to open file for reading." << std::endl;
}
return 0;
}আউটপুট:
Hello, World!
This is a text file example.এখানে, "example.txt" ফাইল থেকে প্রতিটি লাইন পড়ে স্ক্রীনে প্রদর্শন করা হয়েছে।
২. Binary File এর সাথে কাজ করা
Binary files এর সাথে কাজ করতে std::ifstream এবং std::ofstream এর পাশাপাশি ফাইলের বাইনারি মোডে ওপেন করার জন্য "binary" ফ্ল্যাগ ব্যবহার করা হয়। বাইনারি ফাইলের মধ্যে ডেটা সরাসরি মেমরিতে পড়া বা লেখা হয়।
উদাহরণ: Binary File এ লেখা
#include <iostream>
#include <fstream>
int main() {
int num = 12345;
// বাইনারি মোডে ফাইল খুলুন
std::ofstream outFile("example.bin", std::ios::binary);
if (outFile.is_open()) {
// বাইনারি ফাইলের মধ্যে ডেটা লেখা
outFile.write(reinterpret_cast<char*>(&num), sizeof(num));
outFile.close(); // ফাইল বন্ধ
std::cout << "Data written to binary file successfully." << std::endl;
} else {
std::cout << "Unable to open file for writing." << std::endl;
}
return 0;
}আউটপুট:
Data written to binary file successfully.এখানে, একটি int টাইপের মান num বাইনারি ফরম্যাটে "example.bin" ফাইলে লেখা হয়েছে। reinterpret_cast<char*> ব্যবহার করে আমরা int টাইপের ডেটা কে বাইনারি রূপে কাস্ট করেছি এবং write() ফাংশন ব্যবহার করে তা ফাইলে লিখেছি।
উদাহরণ: Binary File থেকে পড়া
#include <iostream>
#include <fstream>
int main() {
int num;
// বাইনারি মোডে ফাইল খুলুন
std::ifstream inFile("example.bin", std::ios::binary);
if (inFile.is_open()) {
// বাইনারি ফাইল থেকে ডেটা পড়া
inFile.read(reinterpret_cast<char*>(&num), sizeof(num));
inFile.close(); // ফাইল বন্ধ
std::cout << "Read number from binary file: " << num << std::endl;
} else {
std::cout << "Unable to open file for reading." << std::endl;
}
return 0;
}আউটপুট:
Read number from binary file: 12345এখানে, "example.bin" ফাইল থেকে বাইনারি ডেটা পড়ে এটি num ভেরিয়েবলে সংরক্ষিত হয়েছে।
৩. Text এবং Binary File এর মধ্যে পার্থক্য
| ফিচার | Text File | Binary File |
|---|---|---|
| মানুষের জন্য পড়া | পাঠযোগ্য (Readable by humans) | পাঠযোগ্য নয় (Not human-readable) |
| ফরম্যাট | পাঠযোগ্য টেক্সট (Character encoding) | বাইনারি ডেটা (Raw binary data) |
| লেখা এবং পড়া | << এবং >> অপারেটর ব্যবহার | write() এবং read() ফাংশন ব্যবহার |
| প্রতিনিধিত্ব | প্রতিটি চরিত্র একটি আউটপুট ভ্যালু | ডেটা সরাসরি মেমরি অনুযায়ী স্টোর |
| ফাইল সাইজ | সাধারণত ছোট এবং কম্প্যাক্ট | বড় বা আরও কম্প্যাক্ট হতে পারে |
উপসংহার
- Text Files: সাধারণত মানুষের দ্বারা পড়া যায় এবং সাধারণ ফাংশন দিয়ে লেখা এবং পড়া হয়।
std::ofstreamএবংstd::ifstreamব্যবহার করে ফাইলের ভিতরে টেক্সট লিখা এবং পড়া হয়। - Binary Files: বাইনারি ডেটা সরাসরি ফাইলের মধ্যে পড়া এবং লেখা হয়। বাইনারি ফাইলের সাথে কাজ করার জন্য
"binary"ফ্ল্যাগ ব্যবহার করা হয়, এবংwrite()ওread()ফাংশনগুলো ব্যবহার করা হয়।
এই দুটি ফাইল ম্যানিপুলেশন ফাংশন সি++ প্রোগ্রামিংয়ে বিভিন্ন ধরনের ডেটা সঞ্চয় এবং পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more