Avatar ·

كيفية قراءة ملف سطرًا بسطر في Go: دليل خطوة بخطوة

مرحبًا بالجميع! أنا مطور Go مبتدئ، وواجهت مشكلة في قراءة ملف نصي سطرًا بسطر. أحتاج إلى معالجة ملف سجلات كبير (حوالي 500 ميجابايت)، حيث كل سطر هو إدخال منفصل. المشكلة هي أنني لا أريد تحميل الملف بأكمله في الذاكرة مرة واحدة، لأنه كبير جدًا. جربت استخدام `ioutil.ReadFile()`، لكنه يُفرغ كل المحتوى في الذاكرة، ويبدأ البرنامج في التباطؤ. علاوة على ذلك، إذا كان الملف أكبر، فقد يؤدي ذلك إلى استنفاد الذاكرة. إليك ما جربته: ```go package main import ( "fmt" "io/ioutil" "strings" ) func main() { data, err := ioutil.ReadFile("large_log.txt") if err != nil { fmt.Println("خطأ:", err) return } lines := strings.Split(string(data), "\n") for i, line := range lines { fmt.Printf("سطر %d: %s\n", i+1, line) } } ``` هذا الكود يعمل، لكنه يحمل الملف بأكمله في الذاكرة، وهو غير فعال. بالإضافة إلى ذلك، إذا كان الملف يحتوي على