recent
أخبار ساخنة

التعامل مع الملفات في لغة C++

AM VIIP
الصفحة الرئيسية
التعامل مع الملفات في لغة C++

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

الملفات Files Handling يُقصَد بها معالجة الملفات و هي عبارة عن وسائط لتخزين البيانات بحيث يتم الكتابة عليها.

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

سوف نشرح كيفية التعامل مع الملفات من حيث القراءة و الكتابة.

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

من أجل التعامل مع الملفات يجب علينا تضمين حزمة <fstream> لأنها تحتوي على الكلاسات المخصصة لذلك.

بالإضافة لحزمة <iostream> لأننا سوف نحتاج منها العامل >> عند الكتابة في الملف.


شرح حزمة fstream للتعامل مع الملفات

عند التعامل مع الملفات يجب علينا أن نستخدم مكتبة fstream الخاصة بالتعامل مع الملفات و يُقصَد بها file stream أي التعامل مع الملفات.

بالإضافة إلى مكتبة iostream ويقصد بها Input Output Stream التي نستخدمها دائماً في بداية البرنامج التي تحتوي على اوامر الإدخال و الإخراج.


الكلاسات المشتقة من حزمة fstream 

  1. كلاس ofstream الخاص بإنشاء كائن و إنشاء ملف جديد و من ثم الكتابه في هذا الملف.
  2. كلاس ifstream يمكّننا من إنشاء كائن و القراءة من ملف ما من داخل المحرر عبر شاشة الإخراج console.
  3. كلاس fstream يمكّننا من إنشاء ملف جديد و القراءة و الكتابة من الملف و يُعتَبًر أنه مدموج بالكلاسين السابقين ofstream و ifstream.


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


إنشاء ملف و الكتابة فيه في C++

مثال

#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 nusur tech";
first_file.close();
return 0;
}

في بداية هذا البرنامج قمنا بإستدعاء مكتبة 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 nusur 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;
}

في بداية هذا البرنامج قمنا بإستدعاء مكتبة 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;
}

إستخدمنا الكلاس fstream و الكائن first_file و هو الكائن الذي سوف نستخدمه للتعامل مع الملف.

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

بعد ذلك قمنا بكتابة إسم saja من أجل إضافته في سطر جديد في الملف و أغلقنا الملف عبر close.

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

 

حفظ ما يدخله المستخدم عبر البرنامج بداخل ملف

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream outfile;
string name;
outfile.open("/home/data/Desktop/tech11.txt");
if(outfile)
{
cout << "Enter your name: ";
getline(cin, name);
outfile << name;
}
outfile.close();
return 0;
}

قمنا بإنشاء كائن من الكلاس ofstream و الكائن هو outfile لأن هذا الكائن سوف نقوم بإستخدامه في إنشاء الملف و نجعل المستخدم يكتب به.

و أنشأنا متغير نصي وهو name من أجل تخزين ما يدخله المستخدم بداخله.

قمنا بإستدعاء الدالة open() من أجل إنشاء ملف جديد إسمه tech11 ضمن المسار المحدد لحفظه وفتحه.

و قمنا بالتأكد من أن الإتصال بالملف الذي يشير له الكائن outfile لا يوجد فيه أي مشاكل قبل التعامل معه.

ثم طلبنا من المستخدم إدخال الإسم و عندما يدخله سوف يتخزن بداخل المتغير name.

و أخيراً اغلقنا الملف المفتوح في الذاكرة بواسطة close().


حذف ملف من الحاسوب بإستخدام الدالة remove()

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char fileName[] = "saja.txt";
if (remove(fileName) == 0)
{
cout << "File deleted successfully";
}
else
{
perror("File deletion failed");
}
return 0;
}

أنشأنا مصفوفة حرفية char خزننا بداخلها إسم الملف الذي نريد حذفه وهو saja.txt.

و إستدعينا الدالة remove() من أجل محاولة حذف الملف من المصفوفة المحددة.

ووضعنا شروط في حال حذف الملف يطبع جملة تم حذف الملف و في حال لم يتم حذفه يكتب لنا فشل و سبب عدم حذفه.

google-playkhamsatmostaqltradent