توضح هذه المقالة كيفية تحديد حجم الملفات برمجيًا في C++ باستخدام دوال `seekg()` و `tellg()` من الكائن `ifstream`.
لتحديد حجم أي ملف، بغض النظر عن نوعه، يمكن اعتبار فهرس (Index) آخر بايت في الملف هو حجمه الإجمالي. تُستخدم الدالة الجاهزة tellg() لاسترداد الفهرس الحالي للمؤشر ضمن تدفق الإدخال. للانتقال بمؤشر الملف من بدايته إلى نهايته، تُستخدم الدالة seekg(0, ios::end). في المثال الموضح أدناه، جرى إنشاء كائن من الفئة ifstream لمحاولة قراءة محتوى ملف باسم demo.txt. بعد التحقق من نجاح فتح الملف، يتم نقل مؤشر الملف إلى نهايته، ثم يُستخدم الفهرس الحالي للمؤشر لتحديد حجم الملف.
مثال عملي: main.cpp
# include <iostream>
# include <fstream>
using namespace std;
int main () {
streampos end;
ifstream myFile;
myFile. open ( "demo.txt" );
if (myFile) {
myFile. seekg ( 0 , ios::end);
end = myFile. tellg ();
cout << "Size is: " << end << " bytes." ;
} else {
perror ( "Error" );
}
myFile. close ();
return 0 ;
}
عند تشغيل البرنامج، وفي حال وجود ملف demo.txt ضمن مسار المشروع، سيتم عرض حجمه كما يلي (مع ملاحظة أن الحجم المعروض سيعكس الحجم الفعلي للملف):
Size is: 95 bytes.
أما في حال عدم وجود الملف demo.txt في مسار المشروع، فسيتم عرض رسالة الخطأ التالية:
Error: No such file or directory