Go Academy · درس

قراءة الملفات باستخدام os وbufio

فتح الملفات وقراءة الأسطر وإغلاقها بأمان

الدرس 1 من 413 خطوة

قراءة الملفات باستخدام os وbufio درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

os.ReadFile

تقرأ os.ReadFile ‏(في Go 1.16 وما بعده) ملفًا كاملًا في شريحة من البايتات باستدعاء واحد. وهي طريقة بسيطة واصطلاحية للملفات الصغيرة.

data, err := os.ReadFile("config.json")
if err != nil { log.Fatal(err) }
fmt.Println(string(data))

os.Open والإغلاق اليدوي

للحصول على تحكم أكبر، افتحوا ملفًا باستخدام os.Open ‏(للقراءة فقط) وأغلقوه باستخدام defer:

f, err := os.Open("data.txt")
if err != nil { return err }
defer f.Close()

القراءة في مخزن مؤقت

اقرؤوا جزءًا من البايتات باستخدام f.Read(buf). وتُعيد هذه الدالة عدد البايتات المقروءة وio.EOF عند الوصول إلى نهاية الملف.

buf := make([]byte, 1024)
n, err := f.Read(buf)
if err != nil && err != io.EOF { return err }
fmt.Println(string(buf[:n]))

bufio.NewReader

غلّفوا ملفًا باستخدام bufio.Reader لتخزين القراءات مؤقتًا وتقليل استدعاءات النظام. وتشمل الأساليب ReadString وReadLine وReadByte.

reader := bufio.NewReader(f)
line, err := reader.ReadString('\n')

القراءة سطرًا سطرًا باستخدام bufio.Scanner

تُعدّ bufio.NewScanner الطريقة الاصطلاحية لقراءة ملف نصي سطرًا سطرًا. ودالة التقسيم الافتراضية هي ScanLines.

scanner := bufio.NewScanner(f)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil { return err }

مخزن Scanner المؤقت المخصص

حجم مخزن Scanner المؤقت الافتراضي هو 64 KiB. وبالنسبة إلى الملفات التي تحتوي على أسطر طويلة جدًا، زيدوا حجم المخزن باستخدام scanner.Buffer.

buf := make([]byte, 1024*1024)
scanner.Buffer(buf, len(buf))

io.ReadAll

تقرأ io.ReadAll من أي io.Reader حتى EOF وتعيد البايتات. وهي مفيدة للقراءة من اتصالات الشبكة أو أجسام الاستجابات أو الملفات المغلّفة في قارئات.

data, err := io.ReadAll(f)

فحص الكلمات والبايتات

استبدلوا دالة التقسيم الخاصة بالماسح لفحص الكلمات (bufio.ScanWords) أو البايتات الفردية (bufio.ScanBytes).

scanner.Split(bufio.ScanWords)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

قراءة النص المنظّم

بعد قراءة الأسطر، استخدموا strings.Fields أو strings.Split لتحليل الأعمدة:

for scanner.Scan() {
    fields := strings.Fields(scanner.Text())
    // fields[0], fields[1], ...
}

أخطاء قراءة الملفات

افحصوا دائمًا ‎Err()‎ الخاص بالماسح بعد حلقة الفحص؛ فهو يعيد أول خطأ ليس EOF. وقد تنتهي الحلقة بشكل طبيعي دون فحص أي أسطر، مع أنها واجهت خطأً.

قراءة stdin المسمّى

استخدموا os.Stdin في أي موضع يُقبل فيه io.Reader. وهذا يتيح لأدوات CLI العمل مع وسيطات الملفات والمدخلات المُمرَّرة عبر الأنابيب.

scanner := bufio.NewScanner(os.Stdin)

اختبار سريع

ما نوع bufio الذي يُعدّ الطريقة الاصطلاحية لقراءة ملف نصي سطرًا سطرًا في Go؟

مراجعة: قراءة الملفات

النقاط الرئيسية:

  • os.ReadFile: قراءة ملف صغير كاملًا باستدعاء واحد
  • bufio.Scanner: القراءة سطرًا سطرًا؛ افحصوا Err() بعد الحلقة
  • bufio.Reader: قراءات مخزّنة مؤقتًا تقلل استدعاءات النظام
  • io.ReadAll: قراءة أي io.Reader حتى اكتماله
البدء مجانًا

تعلم Go مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «قراءة الملفات باستخدام os وbufio» مجاني؟

نعم — نص درس «قراءة الملفات باستخدام os وbufio» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «قراءة الملفات باستخدام os وbufio»؟

فتح الملفات وقراءة الأسطر وإغلاقها بأمان تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «قراءة الملفات باستخدام os وbufio»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة الملفات باستخدام os وbufio
  2. كتابة الملفات والملفات المؤقتة
  3. ترميز JSON وفك ترميزه
  4. بث JSON وCSV
← العودة إلى Go Academy