Skip to content

مكتبة filesystem — نظام الملفات

مكتبة filesystem توفر دوالاً شاملة للتعامل مع الملفات والمجلدات: القراءة والكتابة والإلحاق، وإنشاء المجلدات وحذفها، ومعالجة المسارات، والاستعلام عن خصائص الملفات. تدعم ترميز UTF-8 بالكامل مما يتيح التعامل مع أسماء ملفات عربية.

sad
استورد ملفات من "stdlib/filesystem"

# كتابة ملف
ملفات.اكتب_ملف("السلام.txt"، "بسم الله الرحمن الرحيم\nالسلام عليكم")

# قراءة ملف
متغير محتوى = ملفات.اقرأ_ملف("السلام.txt")
اطبع_سطر(محتوى)

# فحص الوجود
إذا (ملفات.موجود("السلام.txt"))
    اطبع_سطر("الملف موجود!")
نهاية

ملخص الدوال

قراءة وكتابة الملفات

الدالةالوصف
ملفات.اقرأ_ملف(مسار)قراءة ملف كاملاً كنص
ملفات.اقرأ_أسطر(مسار)قراءة ملف كمصفوفة أسطر
ملفات.اقرأ_بايتات(مسار)قراءة ملف كبايتات
ملفات.اكتب_ملف(مسار، محتوى)كتابة نص إلى ملف
ملفات.اكتب_أسطر(مسار، أسطر)كتابة مصفوفة أسطر
ملفات.أضف_إلى_ملف(مسار، محتوى)إلحاق نص بملف

عمليات المجلدات

الدالةالوصف
ملفات.أنشئ_مجلد(مسار)إنشاء مجلد (ومجلدات أب)
ملفات.قائمة_المجلد(مسار)محتويات مجلد
ملفات.احذف(مسار)حذف ملف أو مجلد

الاستعلام

الدالةالوصف
ملفات.موجود(مسار)هل الملف/المجلد موجود
ملفات.هو_ملف(مسار)هل هو ملف
ملفات.هو_مجلد(مسار)هل هو مجلد
ملفات.حجم(مسار)حجم الملف بالبايت

معالجة المسارات

الدالةالوصف
ملفات.اسم_الملف(مسار)اسم الملف فقط
ملفات.المجلد_الأب(مسار)المجلد الذي يحتويه
ملفات.الامتداد(مسار)امتداد الملف
ملفات.ربط_مسار(أجزاء...)دمج أجزاء المسار

قراءة وكتابة الملفات

ملفات.اقرأ_ملف(مسار) — قراءة ملف كنص

تقرأ محتوى ملف بالكامل وتُرجعه كنص واحد. تدعم الملفات المكتوبة بترميز UTF-8 مما يسمح بقراءة ملفات عربية المحتوى. تُرمى رسالة خطأ إذا لم يكن الملف موجوداً أو لا توجد صلاحيات قراءة.

sad
استورد ملفات من "stdlib/filesystem"

# قراءة ملف إعدادات
متغير الإعدادات = ملفات.اقرأ_ملف("إعدادات_التطبيق.txt")
اطبع_سطر(الإعدادات)

# قراءة ملف شعر
متغير القصيدة = ملفات.اقرأ_ملف("قصائد/المعلقات.txt")
اطبع_سطر("طول القصيدة: " + طول(القصيدة) + " حرف")

ملفات.اقرأ_أسطر(مسار) — قراءة ملف كمصفوفة

تقرأ الملف وتُقسّمه إلى مصفوفة من الأسطر. كل عنصر في المصفوفة يمثل سطراً واحداً. مفيدة لمعالجة الملفات سطراً سطراً كملفات CSV أو السجلات.

sad
استورد ملفات من "stdlib/filesystem"

# قراءة قائمة الطلاب سطراً سطراً
متغير الأسطر = ملفات.اقرأ_أسطر("طلاب_الحلقة.txt")

اطبع_سطر("عدد الطلاب: " + حجم_مصفوفة(الأسطر))
متغير رقم = 1
لكل سطر في الأسطر
    اطبع_سطر(رقم + ". " + سطر)
    رقم = رقم + 1
نهاية

ملفات.اكتب_ملف(مسار، محتوى) — كتابة نص إلى ملف

تكتب النص المحدد إلى ملف. إذا كان الملف موجوداً يتم استبدال محتواه بالكامل. إذا لم يكن موجوداً يُنشأ ملف جديد. تدعم النصوص العربية بترميز UTF-8.

sad
استورد ملفات من "stdlib/filesystem"

# حفظ تقرير الحضور
متغير التقرير = "تقرير حضور حلقة التحفيظ\n"
التقرير = التقرير + "التاريخ: 15 رمضان 1446\n"
التقرير = التقرير + "الحاضرون: 25 طالب\n"
التقرير = التقرير + "الغائبون: 3 طلاب\n"

ملفات.اكتب_ملف("تقارير/حضور_رمضان.txt"، التقرير)
اطبع_سطر("تم حفظ التقرير")

ملفات.أضف_إلى_ملف(مسار، محتوى) — إلحاق نص

تُضيف نصاً إلى نهاية ملف موجود دون مسح محتواه السابق. مثالية لملفات السجلات (logs) التي تتراكم فيها البيانات.

sad
استورد ملفات من "stdlib/filesystem"

# تسجيل الأحداث في ملف سجل
دالة سجّل(رسالة)
    متغير سطر = "[1446/09/15] " + رسالة + "\n"
    ملفات.أضف_إلى_ملف("سجل_النظام.log"، سطر)
نهاية

سجّل("بدء تشغيل النظام")
سجّل("تسجيل دخول المستخدم: أحمد")
سجّل("عملية حفظ ناجحة")

عمليات المجلدات

ملفات.أنشئ_مجلد(مسار) — إنشاء مجلد

تُنشئ مجلداً جديداً في المسار المحدد. تُنشئ تلقائياً المجلدات الأب إذا لم تكن موجودة (مثل mkdir -p). لا تُرمى رسالة خطأ إذا كان المجلد موجوداً بالفعل.

sad
استورد ملفات من "stdlib/filesystem"

# إنشاء هيكل مجلدات لمشروع
ملفات.أنشئ_مجلد("مشروع_المكتبة/بيانات")
ملفات.أنشئ_مجلد("مشروع_المكتبة/تقارير")
ملفات.أنشئ_مجلد("مشروع_المكتبة/صور")

اطبع_سطر("تم إنشاء هيكل المشروع")

ملفات.قائمة_المجلد(مسار) — محتويات المجلد

تُرجع مصفوفة بأسماء الملفات والمجلدات داخل المسار المحدد. مفيدة لاستعراض محتويات مجلد أو البحث عن ملفات محددة.

sad
استورد ملفات من "stdlib/filesystem"

# عرض ملفات مجلد المشاريع
متغير المحتويات = ملفات.قائمة_المجلد("مشاريع")

اطبع_سطر("محتويات المجلد:")
لكل عنصر في المحتويات
    إذا (ملفات.هو_مجلد("مشاريع/" + عنصر))
        اطبع_سطر("  📁 " + عنصر)
    وإلا
        اطبع_سطر("  📄 " + عنصر)
    نهاية
نهاية

الاستعلام

ملفات.موجود(مسار) — التحقق من الوجود

تتحقق هل ملف أو مجلد موجود في المسار المحدد. تُرجع صحيح أو خطأ. يُنصح باستخدامها قبل عمليات القراءة لتجنب الأخطاء.

sad
استورد ملفات من "stdlib/filesystem"

# التحقق قبل القراءة
متغير المسار = "بيانات/المستخدمين.json"

إذا (ملفات.موجود(المسار))
    متغير البيانات = ملفات.اقرأ_ملف(المسار)
    اطبع_سطر("تم تحميل البيانات")
وإلا
    اطبع_سطر("ملف البيانات غير موجود، سيتم إنشاؤه")
    ملفات.اكتب_ملف(المسار، "[]")
نهاية

ملفات.حجم(مسار) — حجم الملف

تُرجع حجم الملف بالبايتات كعدد صحيح. مفيدة للتحقق من أن الملف ليس فارغاً أو لا يتجاوز حداً معيناً.

sad
استورد ملفات من "stdlib/filesystem"

متغير الحجم = ملفات.حجم("كتاب.pdf")
إذا (الحجم > 1048576)
    اطبع_سطر("حجم الملف: " + (الحجم / 1048576) + " ميغابايت")
وإلا
    اطبع_سطر("حجم الملف: " + (الحجم / 1024) + " كيلوبايت")
نهاية

معالجة المسارات

ملفات.اسم_الملف(مسار) / ملفات.المجلد_الأب(مسار) / ملفات.الامتداد(مسار)

مجموعة دوال لتفكيك المسارات واستخراج أجزائها.

sad
استورد ملفات من "stdlib/filesystem"

متغير المسار = "مشاريع/لغة_ص/المصادر/رئيسي.ص"

اطبع_سطر(ملفات.اسم_الملف(المسار))     # "رئيسي.ص"
اطبع_سطر(ملفات.المجلد_الأب(المسار))    # "مشاريع/لغة_ص/المصادر"
اطبع_سطر(ملفات.الامتداد(المسار))       # ".ص"

ملفات.ربط_مسار(أجزاء...) — دمج أجزاء المسار

تدمج أجزاء المسار بفاصل النظام المناسب. أكثر أماناً من الدمج اليدوي لأنها تعالج الفواصل المكررة والنظام المختلف (Windows/Linux).

sad
استورد ملفات من "stdlib/filesystem"

متغير المسار = ملفات.ربط_مسار("بيانات"، "مستخدمين"، "أحمد.json")
اطبع_سطر(المسار)    # "بيانات/مستخدمين/أحمد.json"

مثال شامل

sad
استورد ملفات من "stdlib/filesystem"

# نظام أرشفة الفتاوى
اطبع_سطر("=== نظام أرشفة الفتاوى ===")

# إنشاء هيكل الأرشيف
متغير المجلد_الرئيسي = "أرشيف_الفتاوى"
ملفات.أنشئ_مجلد(المجلد_الرئيسي + "/عبادات")
ملفات.أنشئ_مجلد(المجلد_الرئيسي + "/معاملات")
ملفات.أنشئ_مجلد(المجلد_الرئيسي + "/أسرة")

# حفظ فتوى
متغير فتوى = "السؤال: ما حكم صلاة التراويح جماعة؟\n"
فتوى = فتوى + "الجواب: صلاة التراويح سنة مؤكدة، ويجوز أداؤها جماعة أو فرادى.\n"
فتوى = فتوى + "المصدر: فتاوى اللجنة الدائمة\n"

متغير مسار_الفتوى = ملفات.ربط_مسار(المجلد_الرئيسي، "عبادات"، "التراويح.txt")
ملفات.اكتب_ملف(مسار_الفتوى، فتوى)
اطبع_سطر("تم حفظ الفتوى في: " + مسار_الفتوى)

# عرض محتويات الأرشيف
متغير التصنيفات = ملفات.قائمة_المجلد(المجلد_الرئيسي)
اطبع_سطر("التصنيفات المتاحة:")
لكل تصنيف في التصنيفات
    اطبع_سطر("  📂 " + تصنيف)
نهاية

مُرخَّص بموجب رخصة MIT