قراءة الملفات وstdin
مرّر الإدخال المتدفق إلى برنامجك
قراءة الملفات وstdin درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
تستهلك الأدوات المدخلات
تقرأ أداة CLI المفيدة عادةً شيئًا ما: ملفًا تحدده، أو نصًا يُمرَّر إليها. يمنحك Zig طرقًا واضحة وصريحة لتنفيذ الأمرين. 📥
افتح ملفًا حسب المسار
استخدم std.fs.cwd للحصول على الدليل الحالي، ثم استخدم openFile لفتح مسار نسبي إليه للقراءة.
const file = try std.fs.cwd().openFile(path, .{});أغلِق دائمًا ما تفتحه
الملف المفتوح مورد تملكه. اربط عملية الفتح بعبارة defer file.close() حتى يتم تحريره مهما كانت طريقة خروج الدالة.
defer file.close();اقرأ الملف بالكامل
لقراءة كل شيء دفعة واحدة، استدعِ readToEndAlloc مع مخصّص ذاكرة وحد أقصى للحجم. يعيد الدالة البايتات في صورة مقطع تملكه.
const data = try file.readToEndAlloc(a, 1024 * 1024);حرّر البايتات لاحقًا
يعيش المقطع المُعاد في الذاكرة الديناميكية، ولذلك تملكه. أضف defer a.free(data) لتحرير المخزن المؤقت عند الانتهاء منه.
defer a.free(data);حد الحجم وسيلة حماية
تحميك وسيطة الحد الأقصى للبايتات من أن يستهلك ملف ضخم كل الذاكرة. اختر limit مناسبًا لحجم الإدخال الواقعي لأداتك.
احصل على الإدخال القياسي
لقراءة النص المُمرَّر، استخدم std.io.getStdIn. فهو يعيد ملفًا يشبه الملف الذي فتحته، ولذلك تنطبق استدعاءات القراءة نفسها.
const stdin = std.io.getStdIn();اقرأ stdin بالكامل
اطلب قارئًا من stdin واستدعِ readAllAlloc. يجمع هذا كل ما تم تمريره حتى نهاية الإدخال في مقطع واحد تملكه.
const input = try stdin.reader().readAllAlloc(a, 1024 * 1024);اقرأ سطرًا سطرًا
للمعالجة المتدفقة، يجلب readUntilDelimiterOrEof الخاص بالقارئ سطرًا واحدًا في كل مرة إلى مخزن مؤقت، ويعيد null عند انتهاء الإدخال.
const line = try r.readUntilDelimiterOrEof(&buf, '\n');استخدم التخزين المؤقت للسرعة
قد تكون كل قراءة مباشرة استدعاءً للنظام. غلّف القارئ باستخدام std.io.bufferedReader لتجميع العديد من القراءات الصغيرة في عمليات أقل وأسرع.
var br = std.io.bufferedReader(file.reader());الملف أو الأنبوب، الكود نفسه
بما أن الملف وstdin يقدّمان كليهما reader، فإن منطق التحليل لديك لا يهتم بأيّهما حصل عليه. هذا تصميم نظيف قابل لإعادة الاستخدام. ✨
تحقّق سريعًا
تذكّر كيف تحوّل بايتات الملف إلى شيء يمكنك استخدامه.
مراجعة
فتحت الملفات باستخدام openFile، وقرأتها بالكامل أو سطرًا سطرًا، واستخرجت النص من stdin، وحرّرت كل مخزن مؤقت. تمت معالجة الإدخال. 🎯
تعلم Zig مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «قراءة الملفات وstdin» مجاني؟
نعم — نص درس «قراءة الملفات وstdin» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة الملفات وstdin»؟
مرّر الإدخال المتدفق إلى برنامجك تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «قراءة الملفات وstdin»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة وسيطات سطر الأوامر
- قراءة الملفات وstdin
- كتابة المخرجات ورموز الخروج
- تغليف الملف التنفيذي وإصداره