‫املحاضرة‬‫الثامنة‬
‫امللفات‬
ghadeer-al-hasan ghadeer.al.hasan.95@gamil.com
‫إعداد‬:‫م‬.‫الحسن‬ ‫غدير‬
‫املتطايرة‬ ‫الذاكرة‬ ‫يف‬ ‫ستخزن‬ ‫واليت‬ ‫املتحوالت‬ ‫يف‬ ‫البياانت‬ ‫خنزن‬ ‫برانمج‬ ‫كتابة‬‫عند‬RAM‫تنفيذ‬ ‫من‬ ‫االنتهاء‬ ‫وعند‬ ،،‫الربانمج‬
‫هذه‬ ‫من‬ ‫املتحوالت‬ ‫تتحرر‬‫املواقع‬‫القيم‬ ‫وتضيع‬.
‫هلا‬ ‫الوصول‬ ‫نستطيع‬ ‫حيث‬ ‫الدائمة‬ ‫الذاكرة‬ ‫يف‬ ‫القيم‬ ‫هذه‬ ‫ين‬‫ز‬‫خت‬ ‫إىل‬ ‫حنتاج‬ ‫األحيان‬ ‫من‬ ‫الكثري‬ ‫يف‬‫يف‬‫أي‬‫وقت‬‫وهنا‬‫احلاجة‬ ‫وجدت‬
‫إىل‬ ‫البداية‬ ‫يف‬،‫امللفات‬‫متعدد‬ ‫بصيغ‬ ‫امللفات‬ ‫وحفظ‬ ‫عليها‬ ‫البياانت‬ ‫كتابة‬‫على‬ ‫القدرة‬ ‫تعطي‬ ‫حيث‬‫الدائمة‬ ‫الذاكرة‬ ‫يف‬ ‫ة‬.
‫مقدمة‬
1
‫البت‬:‫قيمة‬ ‫أتخذ‬ ‫ثنائية‬ ‫خلية‬ ‫هو‬‫إما‬‫بت‬ ‫شكل‬ ‫على‬ ‫ميثل‬ ‫النهاية‬ ‫يف‬ ‫احلاسوب‬ ‫داخل‬ ‫شي‬ ‫كل‬، ‫واحد‬ ‫أو‬ ‫صفر‬‫ات‬.
‫البايت‬:‫من‬ ‫مؤلف‬8‫بتات‬.
‫احلقل‬:‫نفسه‬ ‫للشيء‬ ‫تعود‬ ‫املعىن‬ ‫بنفس‬ ‫احملارف‬ ‫من‬ ‫جمموعة‬(‫مثال‬:‫األول‬ ‫االسم‬.)
‫السجل‬:‫كلية‬‫يف‬ ‫طالب‬ ‫بياانت‬ ‫أو‬ ‫كة‬‫شر‬ ‫يف‬ ‫موظف‬ ‫بياانت‬ ، ‫الواقع‬ ‫يف‬ ‫ما‬ ‫كائن‬‫متثل‬ ‫احلقول‬ ‫من‬ ‫جمموعة‬.
‫امللف‬:‫حسب‬ ‫البياانت‬ ‫ختزن‬ ‫التسلسلية‬ ‫امللفات‬ ‫يف‬ ، ‫السجالت‬ ‫من‬ ‫جمموعة‬‫املفتاح‬.
‫قواعد‬‫البياانت‬:‫من‬ ‫جمموعة‬‫امللفات‬.
‫البياانت‬ ‫تنظيم‬ ‫هرمية‬
2
‫مؤ‬ ‫وصول‬ ‫حتدد‬ ‫واليت‬ ‫امللف‬ ‫هناية‬ ‫بعالمة‬ ‫تنتهي‬ ‫البايتات‬ ‫من‬ ‫سلسلة‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫مع‬ ‫اللغة‬ ‫تتعامل‬‫لنهايته‬ ‫امللف‬ ‫شر‬.
‫عندما‬‫امللف‬ ‫الربانمج‬ ‫يفتح‬‫تبط‬‫ر‬‫م‬ ‫وجمرى‬ ‫غرض‬ ‫ينشأ‬ ‫فأنه‬‫به‬.
‫والربانمج‬ ‫امللف‬ ‫بني‬ ‫اتصال‬ ‫أداة‬ ‫هو‬ ‫واجملرى‬(‫امللف‬ ‫إىل‬ ‫واخلرج‬ ‫الدخل‬ ‫لتوجيه‬.)
‫املكتبة‬ ‫إىل‬ ‫حنتاج‬ ‫امللفات‬ ‫مع‬ ‫التعامل‬ ‫عند‬<fstream>
‫اجملاري‬ ‫مع‬ ‫للتعامل‬ ‫أشكال‬ ‫ثالثة‬ ‫وتقدم‬:
Ifstream:‫اءة‬‫ر‬‫ق‬ ‫جمرى‬‫فقط‬.
Ofstream:‫كتابة‬‫جمرى‬‫فقط‬.
Fstream:‫اءة‬‫ر‬‫ق‬ ‫جمرى‬‫كتابة‬‫و‬.
‫والقنوات‬ ‫امللفات‬
3
‫امللفات‬ ‫مع‬ ‫السجالت‬ ‫نستخدم‬ ‫ما‬ ً‫ا‬‫غالب‬.
‫امللف‬ ‫بنية‬ ‫حتديد‬ ‫على‬ ‫السجل‬ ‫يساعد‬.
‫امللف‬ ‫أسطر‬ ‫يف‬ ‫سجل‬ ‫نكتب‬.
‫والكتابة‬ ‫اءة‬‫ر‬‫الق‬ ‫عمليات‬ ‫السجالت‬ ‫تسهل‬.
‫والقنوات‬ ‫امللفات‬
4
‫متسلسل‬ ‫بشكل‬ ،‫به‬ ‫الكتابة‬ ‫متت‬ ‫اليت‬ ‫تيب‬‫رت‬‫ال‬ ‫بنفس‬ ‫البياانت‬ ‫أ‬‫ر‬‫تق‬.
‫امللف‬ ‫منتصف‬ ‫يف‬ ‫سجل‬ ‫إضافة‬ ‫ميكن‬ ‫ال‬.
‫امللف‬ ‫من‬ ‫مباشر‬ ‫بشكل‬ ‫سجل‬ ‫حذف‬ ‫ميكن‬ ‫ال‬.
‫امللف‬ ‫من‬ ‫مباشر‬ ‫بشكل‬ ‫سجل‬ ‫من‬ ‫حقل‬ ‫أو‬ ‫سجل‬ ‫تعديل‬ ‫ميكن‬ ‫ال‬.
‫التسلسلي‬ ‫الوصول‬ ‫ملفات‬
5
‫امللف‬ ‫على‬ ‫كتابة‬‫قناة‬ ‫إنشاء‬.
‫عليه‬ ‫والكتابة‬ ‫امللف‬ ‫مع‬ ‫التعامل‬ ‫القناة‬ ‫هذه‬ ‫مهمة‬.
‫اسم‬ ‫إبعطاء‬ ً‫ا‬‫دائم‬ ‫أوصي‬fout‫للقناة‬
‫التسلسلية‬ ‫امللفات‬ ‫على‬ ‫الكتابة‬
6
ofstream fout(“filePath”, fileOpenMode)
‫امللف‬ ‫فتح‬ ‫أمناط‬:
•ios::app:ً‫ا‬‫مسبق‬ ‫املوجودة‬ ‫البياانت‬ ‫على‬ ‫واحلفاظ‬ ،‫امللف‬ ‫هناية‬ ‫يف‬ ‫الكتابة‬.
•ios::ate:‫منه‬ ‫مكان‬ ‫أي‬ ‫يف‬ ‫الكتابة‬ ‫إمكانية‬ ‫مع‬ ‫املفتوح‬ ‫امللف‬ ‫هناية‬ ‫إىل‬ ‫التحرك‬.
•ios::in:‫للدخل‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫فتح‬(‫اءة‬‫ر‬‫ق‬)‫فقط‬.
•ios::out:‫للخرج‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫فتح‬(‫كتابة‬)‫فقط‬.
•ios::trunc:‫للخرج‬ ‫االسم‬ ‫بنفس‬ ‫ملف‬ ‫واستخدام‬ ً‫ا‬‫موجود‬ ‫كان‬‫إذا‬ ‫امللف‬ ‫حذف‬.
‫امللف‬ ‫على‬ ‫اج‬‫ر‬‫اإلخ‬(‫امللف‬ ‫على‬ ‫الكتابة‬ ‫هي‬)‫على‬ ‫الربانمج‬ ‫من‬ ‫البياانت‬ ‫اج‬‫ر‬‫إخ‬ ‫عملية‬ ‫وهي‬‫امللف‬.
‫امللف‬ ‫من‬ ‫اإلدخال‬(‫امللف‬ ‫من‬ ‫اءة‬‫ر‬‫الق‬ ‫هي‬)‫الربانمج‬ ‫إىل‬ ‫امللف‬ ‫من‬ ‫البياانت‬ ‫إدخال‬ ‫عملية‬ ‫وهي‬.
‫النمط‬ ‫أيخذ‬ ً‫ا‬‫اضي‬‫رت‬‫اف‬ ‫فأنه‬ ‫امللف‬ ‫فتح‬ ‫نوع‬ ‫حتديد‬ ‫عدم‬ ‫عند‬ios::out.
ً‫ال‬‫مث‬ ،‫ملف‬ ‫مع‬ ‫قناة‬ ‫فتح‬ ‫عن‬ ‫خطأ‬ ‫حيدث‬ ‫أن‬ ‫ميكن‬:‫أ‬ ،‫الكتابة‬ ‫أو‬ ‫اءة‬‫ر‬‫للق‬ ‫قابل‬ ‫غري‬ ‫امللف‬ ،‫موجود‬ ‫غري‬ ‫امللف‬‫أذوانت‬ ‫مشكلة‬ ‫و‬.
‫مالحظات‬
7
‫كتابة‬‫قناة‬ ‫إنشاء‬ ‫عن‬ ‫مثال‬
8
‫قناة‬ ‫إنشاء‬‫على‬ ‫اءة‬‫ر‬‫ق‬‫امللف‬.
‫مع‬ ‫التعامل‬ ‫القناة‬ ‫هذه‬ ‫مهمة‬‫منه‬ ‫اءة‬‫ر‬‫للق‬ ‫امللف‬.
‫اسم‬ ‫إبعطاء‬ ً‫ا‬‫دائم‬ ‫أوصي‬fin‫للقناة‬
‫التسلسلية‬ ‫امللفات‬ ‫من‬ ‫اءة‬‫ر‬‫الق‬
9
Ifstream fin(“filePath”, ios::in)
‫امللف‬ ‫لنهاية‬ ‫الوصول‬ ‫عند‬eof()‫ل‬ ً‫ة‬‫مشري‬ ‫صفر‬ ‫قيمة‬ ‫وتعيد‬ ‫القناة‬ ‫تتوقف‬‫هناية‬ ‫إىل‬ ‫لوصول‬‫امللف‬.
‫التايل‬ ‫البايت‬ ‫اءة‬‫ر‬‫لق‬ ‫املؤشر‬ ‫ينتقل‬ ‫ابيت‬ ‫اءة‬‫ر‬‫ق‬ ‫عند‬.
‫قناة‬ ‫إنشاء‬ ‫عن‬ ‫مثال‬‫اءة‬‫ر‬‫ق‬
10
‫مؤشر‬ ‫مبوقع‬ ‫حتكم‬ ‫عمليات‬ ‫يوجد‬،‫امللف‬‫ولك‬ ‫معينة‬ ‫ألماكن‬ ‫للوصول‬ ‫تساعدان‬ ‫نفسها‬ ‫املكتبة‬ ‫من‬ ‫مقدمة‬ ‫وهي‬‫معرفة‬ ‫غري‬ ‫من‬ ‫ن‬
‫احلايل‬ ‫املوقع‬ ‫يف‬ ‫نة‬‫ز‬‫املخ‬ ‫البياانت‬ ‫قيمة‬.
•ios::beg:‫لبداية‬ ‫الوصول‬‫امللف‬.
•ios::cur:‫املوقع‬ ‫عن‬ ‫تعرب‬‫احلايل‬.
•ios::end:‫آلخر‬ ‫الوصول‬‫امللف‬.
‫ومها‬ ‫ابلقناة‬ ‫تبط‬‫ر‬‫امل‬ ‫امللف‬ ‫يف‬ ‫املؤشر‬ ‫متوضع‬ ‫إلعادة‬ ‫اتبعني‬ ‫يوجد‬:
•Seekg‫اءة‬‫ر‬‫الق‬ ‫قناة‬ ‫أجل‬ ‫من‬
•Seekp‫الكتابة‬ ‫قناة‬ ‫أجل‬ ‫من‬
‫املطلوب‬ ‫املكان‬ ‫إىل‬ ‫املؤشر‬ ‫احة‬‫ز‬‫إب‬ ‫يقومان‬ ‫حيث‬.
‫ملعرفة‬‫التابع‬ ‫يوجد‬ ‫املؤشر‬ ‫موقع‬tellg()‫احلايل‬ ‫املؤشر‬ ‫موقع‬ ‫لنا‬ ‫يعيد‬(‫ابلبايتات‬ ‫املعادة‬ ‫القيمة‬)
‫املؤشر‬ ‫مبوضع‬ ‫التحكم‬ ‫عمليات‬
11
‫تتضمن‬ ‫ائية‬‫ر‬‫ش‬ ‫فاتورة‬ ‫لدينا‬N‫خالل‬ ‫من‬ ‫منتج‬ ‫كل‬‫يعرف‬ ‫حبيث‬ ‫منتج‬(‫رقم‬–‫اسم‬–‫اة‬‫ر‬‫املتش‬ ‫الوحدة‬ ‫سعر‬–‫الوحدات‬ ‫عدد‬–
‫اإلمجايل‬ ‫السعر‬)‫التالية‬ ‫التوابع‬ ‫يتضمن‬ ‫برانمج‬ ‫بكتابة‬ ‫السجالت‬ ‫مفهوم‬ ‫استخدم‬ ،:
•‫تسلسلي‬ ‫ملف‬ ‫ضمن‬ ‫فاتورة‬ ‫بياانت‬ ‫لكتابة‬ ‫اتبع‬.
•‫التسلسلي‬ ‫امللف‬ ‫حمتوايت‬ ‫لطباعة‬ ‫اتبع‬.
•‫اسم‬ ‫حتديد‬ ‫خالل‬ ‫من‬ ‫منتجات‬ ‫ألحد‬ ‫الوحدة‬ ‫سعر‬ ‫لتعديل‬ ‫اتبع‬‫املنتج‬.
•‫تسلسلي‬ ‫ملف‬ ‫إىل‬ ‫السابق‬ ‫امللف‬ ‫من‬ ‫منتج‬ ‫لكل‬ ‫اإلمجايل‬ ‫والسعر‬ ‫االسم‬ ‫لنسخ‬ ‫اتبع‬‫جديد‬.
•‫وطباعة‬ ‫رقمه‬ ‫خالل‬ ‫من‬ ‫منتج‬ ‫بياانت‬ ‫عن‬ ‫للبحث‬ ‫اتبع‬‫بياانته‬.
•‫السابقة‬ ‫التوابع‬ ‫مجيع‬ ‫يستدعي‬ ‫الذي‬ ‫ئيسي‬‫ر‬‫ال‬ ‫التابع‬.
‫التسلسلية‬ ‫امللفات‬ ‫عن‬ ‫مثال‬ 12
‫التسلسلية‬ ‫امللفات‬ ‫عن‬ ‫مثال‬
13
‫رقم‬ ‫معرفة‬ ‫مبجرد‬ ‫يده‬‫ر‬‫ن‬ ‫الذي‬ ‫للعنصر‬ ‫الوصول‬‫سطره‬.
‫أم‬ ‫املطلوب‬ ‫العنصر‬ ‫هو‬ ‫هل‬ ‫واختبار‬ ‫امللف‬ ‫سجالت‬ ‫كامل‬‫على‬ ‫للمرور‬ ‫داعي‬ ‫وال‬‫ال‬.
‫الذي‬ ‫السطر‬ ‫يف‬ ً‫ة‬‫مباشر‬ ‫ما‬ ‫سجل‬ ‫إدخال‬‫يده‬‫ر‬‫ن‬.
‫امللف‬ ‫بنية‬ ‫يب‬‫ر‬‫خت‬ ‫بدون‬ ً‫ة‬‫مباشر‬ ‫سجل‬ ‫وتعديل‬ ‫حذف‬‫األصلي‬.
‫الوصول‬ ‫ملفات‬‫العشوائي‬ 14
‫ال‬ ‫فقط‬ ‫ابلسطر‬ ‫واحد‬ ‫سجل‬ ‫نكتب‬ ‫حنن‬‫غري‬.
‫حجمه‬ ‫والسجل‬‫اثبت‬.
‫السجل‬ ‫حجم‬ ً‫ا‬‫علم‬ ،‫األول‬ ‫السطر‬ ‫موقع‬ ‫ماهو‬100‫ابيت؟‬
•‫صفر‬ ‫هو‬ ‫األول‬ ‫السطر‬ ‫دليل‬*100(‫السجل‬ ‫حجم‬= )0
‫السجل‬ ‫حجم‬ ً‫ا‬‫علم‬ ،‫اخلامس‬ ‫السطر‬ ‫موقع‬ ‫ماهو‬100‫ابيت؟‬
•‫هو‬ ‫اخلامس‬ ‫السطر‬ ‫دليل‬4*100(‫السجل‬ ‫حجم‬= )400(‫اخلامس‬ ‫السطر‬ ‫بداية‬ ‫يف‬ ‫يقف‬ ‫املؤشر‬)
‫تذكر‬
15
‫عشوائي‬ ‫ملف‬ ‫على‬ ‫والكتابة‬ ‫اءة‬‫ر‬‫للق‬ ‫واحدة‬ ‫قناة‬ ‫حنتاج‬.
‫عشوائي‬ ‫وصول‬ ‫ذو‬ ‫جاهز‬ ‫كتابة‬‫و‬ ‫اءة‬‫ر‬‫ق‬ ‫اتبع‬ ‫يوجد‬
‫امللف‬ ‫مع‬ ‫اتصال‬ ‫قناة‬ ‫إلنشاء‬:
‫عشوائي‬ ‫ملف‬ ‫مع‬ ‫اتصال‬ ‫قناة‬ ‫إنشاء‬
16
fstream f ("student.data",ios::out | ios :: in | ios::bin);
‫عشوائي‬ ‫ملف‬ ‫من‬ ‫اءة‬‫ر‬‫والق‬ ‫الكتابة‬
17
f.seekp( pos_type );
//f.seekp((number - 1) * sizeof(struct));
f.write(const char *, size);
f.seekg ( pos_type );
//f.seekg((number - 1) * sizeof(struct));
f.read( (char*) &s2, size);
‫عشوائي‬ ‫ملف‬ ‫على‬ ‫الكتابة‬ ‫مثال‬ 18
‫ـ‬‫ب‬ ‫بون‬‫ز‬ ‫كل‬‫يعرف‬ ‫حيث‬ ‫ما‬ ‫بنك‬ ‫زابئن‬ ‫بياانت‬ ‫لدينا‬(‫رقم‬–‫اسم‬–‫كنية‬–‫رصيد‬)‫يت‬ ‫برانمج‬ ‫كتابة‬‫واملطلوب‬‫التالية‬ ‫التوابع‬ ‫ضمن‬:
‫املستخدم‬ ‫خيار‬ ‫وإدخال‬ ‫ات‬‫ر‬‫اخليا‬ ‫لطباعة‬ ‫اتبع‬.
‫الرقم‬ ‫حسب‬ ‫تبة‬‫ر‬‫م‬ ‫عشوائي‬ ‫ملف‬ ‫إىل‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫إلضافة‬ ‫اتبع‬.
‫الشاشة‬ ‫على‬ ‫وطباعتها‬ ‫رقمه‬ ‫معرفة‬ ‫خالل‬ ‫من‬ ‫العشوائي‬ ‫امللف‬ ‫من‬ ‫ما‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫اءة‬‫ر‬‫لق‬ ‫اتبع‬.
‫رقمه‬ ‫معرفة‬ ‫خالل‬ ‫من‬ ‫السابق‬ ‫امللف‬ ‫يف‬ ‫نقصان‬ ‫أو‬ ‫زايدة‬ ‫ما‬ ‫بون‬‫ز‬ ‫رصيد‬ ‫لتعديل‬ ‫اتبع‬.
‫حسب‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫حلذف‬ ‫اتبع‬‫رقمه‬.
‫أخر‬ ‫تسلسلي‬ ‫ملف‬ ‫إىل‬ ‫العشوائي‬ ‫امللف‬ ‫بياانت‬ ‫لنسخ‬ ‫اتبع‬.
‫للمستخدم‬ ‫نوضحها‬ ‫اختيار‬ ‫بنية‬ ‫ضمن‬ ‫ئيسي‬‫ر‬‫ال‬ ‫التابع‬ ‫ضمن‬ ‫السابقة‬ ‫التوابع‬ ‫استدعاء‬(‫ب‬ ‫اتبع‬ ‫كل‬‫الشاشة‬ ‫على‬ ‫رقم‬.)
‫امللفات‬ ‫عن‬ ‫مثال‬‫العشوائية‬ 19
‫العشوائية‬ ‫امللفات‬ ‫عن‬ ‫مثال‬
20
‫انتهت‬
‫املحاضرة‬‫الثامنة‬
ghadeer-al-hasan ghadeer.al.hasan.95@gamil.com

[C++ Tutorial] #8 Files

  • 1.
  • 2.
    ‫املتطايرة‬ ‫الذاكرة‬ ‫يف‬‫ستخزن‬ ‫واليت‬ ‫املتحوالت‬ ‫يف‬ ‫البياانت‬ ‫خنزن‬ ‫برانمج‬ ‫كتابة‬‫عند‬RAM‫تنفيذ‬ ‫من‬ ‫االنتهاء‬ ‫وعند‬ ،،‫الربانمج‬ ‫هذه‬ ‫من‬ ‫املتحوالت‬ ‫تتحرر‬‫املواقع‬‫القيم‬ ‫وتضيع‬. ‫هلا‬ ‫الوصول‬ ‫نستطيع‬ ‫حيث‬ ‫الدائمة‬ ‫الذاكرة‬ ‫يف‬ ‫القيم‬ ‫هذه‬ ‫ين‬‫ز‬‫خت‬ ‫إىل‬ ‫حنتاج‬ ‫األحيان‬ ‫من‬ ‫الكثري‬ ‫يف‬‫يف‬‫أي‬‫وقت‬‫وهنا‬‫احلاجة‬ ‫وجدت‬ ‫إىل‬ ‫البداية‬ ‫يف‬،‫امللفات‬‫متعدد‬ ‫بصيغ‬ ‫امللفات‬ ‫وحفظ‬ ‫عليها‬ ‫البياانت‬ ‫كتابة‬‫على‬ ‫القدرة‬ ‫تعطي‬ ‫حيث‬‫الدائمة‬ ‫الذاكرة‬ ‫يف‬ ‫ة‬. ‫مقدمة‬ 1
  • 3.
    ‫البت‬:‫قيمة‬ ‫أتخذ‬ ‫ثنائية‬‫خلية‬ ‫هو‬‫إما‬‫بت‬ ‫شكل‬ ‫على‬ ‫ميثل‬ ‫النهاية‬ ‫يف‬ ‫احلاسوب‬ ‫داخل‬ ‫شي‬ ‫كل‬، ‫واحد‬ ‫أو‬ ‫صفر‬‫ات‬. ‫البايت‬:‫من‬ ‫مؤلف‬8‫بتات‬. ‫احلقل‬:‫نفسه‬ ‫للشيء‬ ‫تعود‬ ‫املعىن‬ ‫بنفس‬ ‫احملارف‬ ‫من‬ ‫جمموعة‬(‫مثال‬:‫األول‬ ‫االسم‬.) ‫السجل‬:‫كلية‬‫يف‬ ‫طالب‬ ‫بياانت‬ ‫أو‬ ‫كة‬‫شر‬ ‫يف‬ ‫موظف‬ ‫بياانت‬ ، ‫الواقع‬ ‫يف‬ ‫ما‬ ‫كائن‬‫متثل‬ ‫احلقول‬ ‫من‬ ‫جمموعة‬. ‫امللف‬:‫حسب‬ ‫البياانت‬ ‫ختزن‬ ‫التسلسلية‬ ‫امللفات‬ ‫يف‬ ، ‫السجالت‬ ‫من‬ ‫جمموعة‬‫املفتاح‬. ‫قواعد‬‫البياانت‬:‫من‬ ‫جمموعة‬‫امللفات‬. ‫البياانت‬ ‫تنظيم‬ ‫هرمية‬ 2
  • 4.
    ‫مؤ‬ ‫وصول‬ ‫حتدد‬‫واليت‬ ‫امللف‬ ‫هناية‬ ‫بعالمة‬ ‫تنتهي‬ ‫البايتات‬ ‫من‬ ‫سلسلة‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫مع‬ ‫اللغة‬ ‫تتعامل‬‫لنهايته‬ ‫امللف‬ ‫شر‬. ‫عندما‬‫امللف‬ ‫الربانمج‬ ‫يفتح‬‫تبط‬‫ر‬‫م‬ ‫وجمرى‬ ‫غرض‬ ‫ينشأ‬ ‫فأنه‬‫به‬. ‫والربانمج‬ ‫امللف‬ ‫بني‬ ‫اتصال‬ ‫أداة‬ ‫هو‬ ‫واجملرى‬(‫امللف‬ ‫إىل‬ ‫واخلرج‬ ‫الدخل‬ ‫لتوجيه‬.) ‫املكتبة‬ ‫إىل‬ ‫حنتاج‬ ‫امللفات‬ ‫مع‬ ‫التعامل‬ ‫عند‬<fstream> ‫اجملاري‬ ‫مع‬ ‫للتعامل‬ ‫أشكال‬ ‫ثالثة‬ ‫وتقدم‬: Ifstream:‫اءة‬‫ر‬‫ق‬ ‫جمرى‬‫فقط‬. Ofstream:‫كتابة‬‫جمرى‬‫فقط‬. Fstream:‫اءة‬‫ر‬‫ق‬ ‫جمرى‬‫كتابة‬‫و‬. ‫والقنوات‬ ‫امللفات‬ 3
  • 5.
    ‫امللفات‬ ‫مع‬ ‫السجالت‬‫نستخدم‬ ‫ما‬ ً‫ا‬‫غالب‬. ‫امللف‬ ‫بنية‬ ‫حتديد‬ ‫على‬ ‫السجل‬ ‫يساعد‬. ‫امللف‬ ‫أسطر‬ ‫يف‬ ‫سجل‬ ‫نكتب‬. ‫والكتابة‬ ‫اءة‬‫ر‬‫الق‬ ‫عمليات‬ ‫السجالت‬ ‫تسهل‬. ‫والقنوات‬ ‫امللفات‬ 4
  • 6.
    ‫متسلسل‬ ‫بشكل‬ ،‫به‬‫الكتابة‬ ‫متت‬ ‫اليت‬ ‫تيب‬‫رت‬‫ال‬ ‫بنفس‬ ‫البياانت‬ ‫أ‬‫ر‬‫تق‬. ‫امللف‬ ‫منتصف‬ ‫يف‬ ‫سجل‬ ‫إضافة‬ ‫ميكن‬ ‫ال‬. ‫امللف‬ ‫من‬ ‫مباشر‬ ‫بشكل‬ ‫سجل‬ ‫حذف‬ ‫ميكن‬ ‫ال‬. ‫امللف‬ ‫من‬ ‫مباشر‬ ‫بشكل‬ ‫سجل‬ ‫من‬ ‫حقل‬ ‫أو‬ ‫سجل‬ ‫تعديل‬ ‫ميكن‬ ‫ال‬. ‫التسلسلي‬ ‫الوصول‬ ‫ملفات‬ 5
  • 7.
    ‫امللف‬ ‫على‬ ‫كتابة‬‫قناة‬‫إنشاء‬. ‫عليه‬ ‫والكتابة‬ ‫امللف‬ ‫مع‬ ‫التعامل‬ ‫القناة‬ ‫هذه‬ ‫مهمة‬. ‫اسم‬ ‫إبعطاء‬ ً‫ا‬‫دائم‬ ‫أوصي‬fout‫للقناة‬ ‫التسلسلية‬ ‫امللفات‬ ‫على‬ ‫الكتابة‬ 6 ofstream fout(“filePath”, fileOpenMode) ‫امللف‬ ‫فتح‬ ‫أمناط‬: •ios::app:ً‫ا‬‫مسبق‬ ‫املوجودة‬ ‫البياانت‬ ‫على‬ ‫واحلفاظ‬ ،‫امللف‬ ‫هناية‬ ‫يف‬ ‫الكتابة‬. •ios::ate:‫منه‬ ‫مكان‬ ‫أي‬ ‫يف‬ ‫الكتابة‬ ‫إمكانية‬ ‫مع‬ ‫املفتوح‬ ‫امللف‬ ‫هناية‬ ‫إىل‬ ‫التحرك‬. •ios::in:‫للدخل‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫فتح‬(‫اءة‬‫ر‬‫ق‬)‫فقط‬. •ios::out:‫للخرج‬ ‫أنه‬ ‫على‬ ‫امللف‬ ‫فتح‬(‫كتابة‬)‫فقط‬. •ios::trunc:‫للخرج‬ ‫االسم‬ ‫بنفس‬ ‫ملف‬ ‫واستخدام‬ ً‫ا‬‫موجود‬ ‫كان‬‫إذا‬ ‫امللف‬ ‫حذف‬.
  • 8.
    ‫امللف‬ ‫على‬ ‫اج‬‫ر‬‫اإلخ‬(‫امللف‬‫على‬ ‫الكتابة‬ ‫هي‬)‫على‬ ‫الربانمج‬ ‫من‬ ‫البياانت‬ ‫اج‬‫ر‬‫إخ‬ ‫عملية‬ ‫وهي‬‫امللف‬. ‫امللف‬ ‫من‬ ‫اإلدخال‬(‫امللف‬ ‫من‬ ‫اءة‬‫ر‬‫الق‬ ‫هي‬)‫الربانمج‬ ‫إىل‬ ‫امللف‬ ‫من‬ ‫البياانت‬ ‫إدخال‬ ‫عملية‬ ‫وهي‬. ‫النمط‬ ‫أيخذ‬ ً‫ا‬‫اضي‬‫رت‬‫اف‬ ‫فأنه‬ ‫امللف‬ ‫فتح‬ ‫نوع‬ ‫حتديد‬ ‫عدم‬ ‫عند‬ios::out. ً‫ال‬‫مث‬ ،‫ملف‬ ‫مع‬ ‫قناة‬ ‫فتح‬ ‫عن‬ ‫خطأ‬ ‫حيدث‬ ‫أن‬ ‫ميكن‬:‫أ‬ ،‫الكتابة‬ ‫أو‬ ‫اءة‬‫ر‬‫للق‬ ‫قابل‬ ‫غري‬ ‫امللف‬ ،‫موجود‬ ‫غري‬ ‫امللف‬‫أذوانت‬ ‫مشكلة‬ ‫و‬. ‫مالحظات‬ 7
  • 9.
  • 10.
    ‫قناة‬ ‫إنشاء‬‫على‬ ‫اءة‬‫ر‬‫ق‬‫امللف‬. ‫مع‬‫التعامل‬ ‫القناة‬ ‫هذه‬ ‫مهمة‬‫منه‬ ‫اءة‬‫ر‬‫للق‬ ‫امللف‬. ‫اسم‬ ‫إبعطاء‬ ً‫ا‬‫دائم‬ ‫أوصي‬fin‫للقناة‬ ‫التسلسلية‬ ‫امللفات‬ ‫من‬ ‫اءة‬‫ر‬‫الق‬ 9 Ifstream fin(“filePath”, ios::in) ‫امللف‬ ‫لنهاية‬ ‫الوصول‬ ‫عند‬eof()‫ل‬ ً‫ة‬‫مشري‬ ‫صفر‬ ‫قيمة‬ ‫وتعيد‬ ‫القناة‬ ‫تتوقف‬‫هناية‬ ‫إىل‬ ‫لوصول‬‫امللف‬. ‫التايل‬ ‫البايت‬ ‫اءة‬‫ر‬‫لق‬ ‫املؤشر‬ ‫ينتقل‬ ‫ابيت‬ ‫اءة‬‫ر‬‫ق‬ ‫عند‬.
  • 11.
    ‫قناة‬ ‫إنشاء‬ ‫عن‬‫مثال‬‫اءة‬‫ر‬‫ق‬ 10
  • 12.
    ‫مؤشر‬ ‫مبوقع‬ ‫حتكم‬‫عمليات‬ ‫يوجد‬،‫امللف‬‫ولك‬ ‫معينة‬ ‫ألماكن‬ ‫للوصول‬ ‫تساعدان‬ ‫نفسها‬ ‫املكتبة‬ ‫من‬ ‫مقدمة‬ ‫وهي‬‫معرفة‬ ‫غري‬ ‫من‬ ‫ن‬ ‫احلايل‬ ‫املوقع‬ ‫يف‬ ‫نة‬‫ز‬‫املخ‬ ‫البياانت‬ ‫قيمة‬. •ios::beg:‫لبداية‬ ‫الوصول‬‫امللف‬. •ios::cur:‫املوقع‬ ‫عن‬ ‫تعرب‬‫احلايل‬. •ios::end:‫آلخر‬ ‫الوصول‬‫امللف‬. ‫ومها‬ ‫ابلقناة‬ ‫تبط‬‫ر‬‫امل‬ ‫امللف‬ ‫يف‬ ‫املؤشر‬ ‫متوضع‬ ‫إلعادة‬ ‫اتبعني‬ ‫يوجد‬: •Seekg‫اءة‬‫ر‬‫الق‬ ‫قناة‬ ‫أجل‬ ‫من‬ •Seekp‫الكتابة‬ ‫قناة‬ ‫أجل‬ ‫من‬ ‫املطلوب‬ ‫املكان‬ ‫إىل‬ ‫املؤشر‬ ‫احة‬‫ز‬‫إب‬ ‫يقومان‬ ‫حيث‬. ‫ملعرفة‬‫التابع‬ ‫يوجد‬ ‫املؤشر‬ ‫موقع‬tellg()‫احلايل‬ ‫املؤشر‬ ‫موقع‬ ‫لنا‬ ‫يعيد‬(‫ابلبايتات‬ ‫املعادة‬ ‫القيمة‬) ‫املؤشر‬ ‫مبوضع‬ ‫التحكم‬ ‫عمليات‬ 11
  • 13.
    ‫تتضمن‬ ‫ائية‬‫ر‬‫ش‬ ‫فاتورة‬‫لدينا‬N‫خالل‬ ‫من‬ ‫منتج‬ ‫كل‬‫يعرف‬ ‫حبيث‬ ‫منتج‬(‫رقم‬–‫اسم‬–‫اة‬‫ر‬‫املتش‬ ‫الوحدة‬ ‫سعر‬–‫الوحدات‬ ‫عدد‬– ‫اإلمجايل‬ ‫السعر‬)‫التالية‬ ‫التوابع‬ ‫يتضمن‬ ‫برانمج‬ ‫بكتابة‬ ‫السجالت‬ ‫مفهوم‬ ‫استخدم‬ ،: •‫تسلسلي‬ ‫ملف‬ ‫ضمن‬ ‫فاتورة‬ ‫بياانت‬ ‫لكتابة‬ ‫اتبع‬. •‫التسلسلي‬ ‫امللف‬ ‫حمتوايت‬ ‫لطباعة‬ ‫اتبع‬. •‫اسم‬ ‫حتديد‬ ‫خالل‬ ‫من‬ ‫منتجات‬ ‫ألحد‬ ‫الوحدة‬ ‫سعر‬ ‫لتعديل‬ ‫اتبع‬‫املنتج‬. •‫تسلسلي‬ ‫ملف‬ ‫إىل‬ ‫السابق‬ ‫امللف‬ ‫من‬ ‫منتج‬ ‫لكل‬ ‫اإلمجايل‬ ‫والسعر‬ ‫االسم‬ ‫لنسخ‬ ‫اتبع‬‫جديد‬. •‫وطباعة‬ ‫رقمه‬ ‫خالل‬ ‫من‬ ‫منتج‬ ‫بياانت‬ ‫عن‬ ‫للبحث‬ ‫اتبع‬‫بياانته‬. •‫السابقة‬ ‫التوابع‬ ‫مجيع‬ ‫يستدعي‬ ‫الذي‬ ‫ئيسي‬‫ر‬‫ال‬ ‫التابع‬. ‫التسلسلية‬ ‫امللفات‬ ‫عن‬ ‫مثال‬ 12
  • 14.
  • 15.
    ‫رقم‬ ‫معرفة‬ ‫مبجرد‬‫يده‬‫ر‬‫ن‬ ‫الذي‬ ‫للعنصر‬ ‫الوصول‬‫سطره‬. ‫أم‬ ‫املطلوب‬ ‫العنصر‬ ‫هو‬ ‫هل‬ ‫واختبار‬ ‫امللف‬ ‫سجالت‬ ‫كامل‬‫على‬ ‫للمرور‬ ‫داعي‬ ‫وال‬‫ال‬. ‫الذي‬ ‫السطر‬ ‫يف‬ ً‫ة‬‫مباشر‬ ‫ما‬ ‫سجل‬ ‫إدخال‬‫يده‬‫ر‬‫ن‬. ‫امللف‬ ‫بنية‬ ‫يب‬‫ر‬‫خت‬ ‫بدون‬ ً‫ة‬‫مباشر‬ ‫سجل‬ ‫وتعديل‬ ‫حذف‬‫األصلي‬. ‫الوصول‬ ‫ملفات‬‫العشوائي‬ 14
  • 16.
    ‫ال‬ ‫فقط‬ ‫ابلسطر‬‫واحد‬ ‫سجل‬ ‫نكتب‬ ‫حنن‬‫غري‬. ‫حجمه‬ ‫والسجل‬‫اثبت‬. ‫السجل‬ ‫حجم‬ ً‫ا‬‫علم‬ ،‫األول‬ ‫السطر‬ ‫موقع‬ ‫ماهو‬100‫ابيت؟‬ •‫صفر‬ ‫هو‬ ‫األول‬ ‫السطر‬ ‫دليل‬*100(‫السجل‬ ‫حجم‬= )0 ‫السجل‬ ‫حجم‬ ً‫ا‬‫علم‬ ،‫اخلامس‬ ‫السطر‬ ‫موقع‬ ‫ماهو‬100‫ابيت؟‬ •‫هو‬ ‫اخلامس‬ ‫السطر‬ ‫دليل‬4*100(‫السجل‬ ‫حجم‬= )400(‫اخلامس‬ ‫السطر‬ ‫بداية‬ ‫يف‬ ‫يقف‬ ‫املؤشر‬) ‫تذكر‬ 15
  • 17.
    ‫عشوائي‬ ‫ملف‬ ‫على‬‫والكتابة‬ ‫اءة‬‫ر‬‫للق‬ ‫واحدة‬ ‫قناة‬ ‫حنتاج‬. ‫عشوائي‬ ‫وصول‬ ‫ذو‬ ‫جاهز‬ ‫كتابة‬‫و‬ ‫اءة‬‫ر‬‫ق‬ ‫اتبع‬ ‫يوجد‬ ‫امللف‬ ‫مع‬ ‫اتصال‬ ‫قناة‬ ‫إلنشاء‬: ‫عشوائي‬ ‫ملف‬ ‫مع‬ ‫اتصال‬ ‫قناة‬ ‫إنشاء‬ 16 fstream f ("student.data",ios::out | ios :: in | ios::bin);
  • 18.
    ‫عشوائي‬ ‫ملف‬ ‫من‬‫اءة‬‫ر‬‫والق‬ ‫الكتابة‬ 17 f.seekp( pos_type ); //f.seekp((number - 1) * sizeof(struct)); f.write(const char *, size); f.seekg ( pos_type ); //f.seekg((number - 1) * sizeof(struct)); f.read( (char*) &s2, size);
  • 19.
    ‫عشوائي‬ ‫ملف‬ ‫على‬‫الكتابة‬ ‫مثال‬ 18
  • 20.
    ‫ـ‬‫ب‬ ‫بون‬‫ز‬ ‫كل‬‫يعرف‬‫حيث‬ ‫ما‬ ‫بنك‬ ‫زابئن‬ ‫بياانت‬ ‫لدينا‬(‫رقم‬–‫اسم‬–‫كنية‬–‫رصيد‬)‫يت‬ ‫برانمج‬ ‫كتابة‬‫واملطلوب‬‫التالية‬ ‫التوابع‬ ‫ضمن‬: ‫املستخدم‬ ‫خيار‬ ‫وإدخال‬ ‫ات‬‫ر‬‫اخليا‬ ‫لطباعة‬ ‫اتبع‬. ‫الرقم‬ ‫حسب‬ ‫تبة‬‫ر‬‫م‬ ‫عشوائي‬ ‫ملف‬ ‫إىل‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫إلضافة‬ ‫اتبع‬. ‫الشاشة‬ ‫على‬ ‫وطباعتها‬ ‫رقمه‬ ‫معرفة‬ ‫خالل‬ ‫من‬ ‫العشوائي‬ ‫امللف‬ ‫من‬ ‫ما‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫اءة‬‫ر‬‫لق‬ ‫اتبع‬. ‫رقمه‬ ‫معرفة‬ ‫خالل‬ ‫من‬ ‫السابق‬ ‫امللف‬ ‫يف‬ ‫نقصان‬ ‫أو‬ ‫زايدة‬ ‫ما‬ ‫بون‬‫ز‬ ‫رصيد‬ ‫لتعديل‬ ‫اتبع‬. ‫حسب‬ ‫بون‬‫ز‬ ‫بياانت‬ ‫حلذف‬ ‫اتبع‬‫رقمه‬. ‫أخر‬ ‫تسلسلي‬ ‫ملف‬ ‫إىل‬ ‫العشوائي‬ ‫امللف‬ ‫بياانت‬ ‫لنسخ‬ ‫اتبع‬. ‫للمستخدم‬ ‫نوضحها‬ ‫اختيار‬ ‫بنية‬ ‫ضمن‬ ‫ئيسي‬‫ر‬‫ال‬ ‫التابع‬ ‫ضمن‬ ‫السابقة‬ ‫التوابع‬ ‫استدعاء‬(‫ب‬ ‫اتبع‬ ‫كل‬‫الشاشة‬ ‫على‬ ‫رقم‬.) ‫امللفات‬ ‫عن‬ ‫مثال‬‫العشوائية‬ 19
  • 21.
  • 22.