Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

C++كيفية معرفة حجم الملف

لمعرفة حجم الملف مهما كان نوعه تحتاج التالي:

  • إجمالاً Index آخر حرف في الملف يساوي حجم الملف.
  • لمعرفة Index الحرف الذي يقف عنده المترجم حالياً نستخدم دالة جاهزة إسمها tellg().
  • للإنتقال من أول حرف في الملف لآخر حرف فيه نستخدم الدالة seekg(0, ios::end).


في المثال التالي قمنا بإنشاء كائن من الكلاس ifstream و من ثم حاولنا استخدامه لقراءة محتوى ملف إسمه demo.txt.
بعد التأكد من أن الملف مفتوح, قمنا بتخزين Index أول حرف في الملف في متغير إسمه begin و آخر حرف في الملف في متغير إسمه end لأننا من خلال طرحهما من بعضهما سنعرف حجم الملف.

مثال

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

عند تشغيل البرنامج, إذا كان يوجد في مشروعك ملف إسمه demo.txt سيتم طباعة حجمه كالتالي مع الإشارة إلى أن حجم الملف سيكون بقدر حجم ملفك الحقيقي.

Size is: 95 bytes.
		

عند تشغيل البرنامج, إذا كان لا يوجد في مشروعك ملف إسمه demo.txt سيتم طباعة الجملة التالية.

Error: No such file or directory