recent
أخبار ساخنة

التعامل مع الملفات files في لغة سي بلس بلس ++C الدرس|17|

الصفحة الرئيسية


التعامل مع الملفات Files في ++C

يُقصَد بها معالجة الملفات و هي عبارة عن وسائط لتخزين البيانات بحيث يتم الكتابة عليها و تحفظ هذه البيانات بداخلها أو إجراء عملية معالجة للبيانات الموجودة على الحاسب مثل القراءة من الملف أو الكتابة على ملف أو اخذ نسخة ثانية منه, سوف نشرح كيفية التعامل مع الملفات من حيث القراءة و الكتابة.

من أجل فتح ملف يجب علينا تحديد مسار هذا الملف و إمتداده و عند فتح هذا الملف يجب علينا إخبار البرنامج بأننا هل نريد القراءة من هذا الملف أم الكتابة ام الإثنين معاً. 


شرح مكتبة fstream

عند التعامل مع الملفات يجب علينا أن نستخدم مكتبة fstream الخاصة بالتعامل مع الملفات و يُقصَد بها file stream أي التعامل مع الملفات بالإضافة إلى مكتبة iostream الذي نستخدمها دائماً في بداية البرنامج التي تحتوي على اوامر الإدخال و الإخراج.

 

الكلاسات المشتقة من مكتبة fstream

1- كلاس ofstream الخاص بإنشاء كائن و إنشاء ملف جديد و من ثم الكتابه في هذا الملف.

2- كلاس ifstream يمكّننا من إنشاء كائن و القراءة من ملف ما من داخل المحرر عبر شاشة الإخراج console.

3- كلاس fstream يمكّننا من إنشاء ملف جديد و القراءة و الكتابة من الملف و يُعتَبًر أنه مدموج بالكلاسين السابقين ofstream و ifstream.

و تحتوي هذه الكلاسات على دالة للفتح و هي ()open و دالة للإغلاق و هي ()close.

 

إنشاء ملف عبر ofstream

مثال

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ofstream first_file;
    first_file.open("/home/data/Desktop/tech1.txt");
    first_file<< "welcome in website programmer tech";
    first_file.close();
    return 0;
}

 

شرح البرنامج السابق 1

في بداية هذا البرنامج قمنا بإستدعاء مكتبة iostream و مكتبة fstream الخاصة بالتعامل مع الملفات و ثم عرفنا البرنامج اننا نريد إستخدام الكلاس ofstream من أجل إنشاء ملف و الكتابة به و الكائن الذي أنشأناه هو first_file سوف نستخدم هذا الكائن المشتق لإنشاء ملف و الكتابه بداخله, في السطر الذي يليه وضعنا الكائن في البداية و معه الدالة open لأجل فتح الملف ثم حددنا مسار هذا الملف و إسمه و صيغته txt أي ملف نصي, و بعد ذلك بإستخدام الكائن قمنا بكتابة جملة لنضيفها للملف النصي الذي سوف ينشئ عند تشغيل البرنامج, ثم اغلقنا البرنامج عبر التعليمة close مستخدمين الكائن لهذا الأمر, و عند تنفيذ الكود سوف نحصل على النتيجة الآتية

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


في هذه الحالة أي كلمة سوف نضيفها عبر المحرر سوف تُحذَف الكلمة القديمة الموجودة في الملف النصي و تصبح عوضاً عنها الكلمة الذي كتبناها حالياً, نحن هنا لا نُريد أن يُحذَف ما هو موجود مسبقاً نريده أن يبقى موجوداً, سوف نعالج هذه المشكلة عبر المثال التالي مستخدمين البارميتر ios::app.

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream first_file;
    first_file.open("/home/data/Desktop/tech1.txt",ios::app);
    first_file<< "welcome in website programmer tech";
    first_file.close();
    return 0;
}

 

نلاحظ هنا أنن قمنا بإضافة الباراميتر ios::app من أجل إخبار المحرر أننا نريد إضافة هذا الكلام إلى الملف النصي و ليس حذف ما بداخل الملف و إستبداله, و عند التشغيل سيكون بالشكل

 

عند تنفيذ البرنامج السابق لقد اضاف لنا ما كتبناه إلى الملف النصي و لم يستبدله.


إستيراد من ملف عبر ifstream و قراءته عبر المحرر

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream first_file;
    first_file.open("/home/data/Desktop/tech1.txt");
    cout<< first_file.rdbuf();
    first_file.close();
    system("pause");
    return 0;
}

 

شرح البرنامج السابق 2

في بداية هذا البرنامج قمنا بإستدعاء مكتبة iostream و مكتبة fstream الخاصة بالتعامل مع الملفات و ثم عرفنا البرنامج اننا نريد إستخدام الكلاس ifstream من أجل القراءة من الملف من خلال نافذة الإخراج console و الكائن الذي أنشأناه هو first_file سوف نستخدم هذا الكائن المشتق من اجل القراءة من الملف, في السطر الذي يليه وضعنا الكائن في البداية و معه الدالة open لأجل فتح ملف ثم حددنا مسار هذا الملف و إسمه و صيغته txt أي ملف نصي, ثم إستخدمنا دالة الطباعة cout من اجل طباعة ما نريده على شاشة الإخراج و استخدمنا الدالة rdbuf ثم اغلقنا الملف بإستخدام close و من ثم إستخدمنا الكلمة pause من اجل تعليق شاشة التنفيذ عند فتحها, و عند إستخدام امر تنفيذ للكود السابق ستكون النتيجة هي


كما لاحظنا أننا قرأنا كل ما بداخل الملف المحدد عبر نافذة الإخراج console بكل سهولة


الكلاس fstream

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream first_file;
    first_file.open("/home/data/Desktop/tech1.txt",ios::out|ios::app);
    first_file << "\n saja";
    first_file.close();
    system("pause");
    return 0;
}

 

شرح البرنامج السابق 3

إستخدمنا الكلاس fstream و الكائن first_file و هو الكائن الذي سوف نستخدمه للتعامل مع الملف و قُمنا بإستخدام الدالة open من أجل فتح الملف و حددنا مسار الملف و إستخدمنا الثابت ios::out التابع للباراميتر ios فهو يُستخدم من أجل إعلام المفسر الخاص بالمحرر بأنه سوف نقوم بفتح الملف بغرض الكتابة به و وضعنا | يعني التابع المنطقي or ثم إستخدمنا الثابت ios::app الذي يُخبر المفسر أنه سوف يتم إضافة كل جديد نكتبهُ في نهاية الملف بعد ذلك قمنا بكتابة إسم saja من أجل إضافته في سطر جديد في الملف و اغلقنا الملف عبر close, عند التشغيل سوف نجد النتيجة

لقد اضاف لنا كلمة saja في سطر جديد من هذا الملف.

google-playkhamsatmostaqltradent