العمل مع نظام الملفات في Go: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع نظام الملفات في Go: من الأساسيات إلى التقنيات المتقدمة

Go (Golang) هي لغة برمجة مترجمة حديثة تشتهر بأدائها العالي وبساطتها ودعمها المدمج للعمل مع نظام الملفات. القدرة على قراءة وكتابة وإنشاء وإدارة الملفات والمجلدات بكفاءة هي إحدى المهارات الأساسية لأي مطور يستخدم Go. في هذه المقالة، سنستعرض بالتفصيل العمليات الأساسية مع نظام الملفات باستخدام المكتبة القياسية os و io/ioutil (اعتبارًا من Go 1.16 يُوصى باستخدام os و io) و path/filepath. ستتعلم كيفية فتح وإغلاق الملفات، وقراءة وكتابة البيانات، والعمل مع المجلدات، واجتياز الأشجار البرمجية للملفات.



1. الأساسيات: فتح وقراءة وكتابة الملفات

يبدأ العمل مع الملفات في Go من الحزمة os. لفتح ملف، تُستخدم الدالة os.Open (للقراءة فقط) أو os.OpenFile (للقراءة والكتابة مع تحديد الوضع). بعد الانتهاء من العمل، يجب إغلاق الملف باستخدام defer file.Close() لتحرير موارد النظام.



قراءة ملف كامل

أبسط طريقة لقراءة ملف هي استخدام os.ReadFile (متاح منذ Go 1.16). تقوم بإرجاع شريحة من البايتات ورسالة خطأ.

package main

import ( "fmt" "os")

func main() { data, err := os.ReadFile("example.txt") if err != nil { fmt.Println("خطأ في قراءة الملف:", err) return } fmt.Println("محتوى الملف:") fmt.Println(string(data))}


الكتابة في ملف

لكتابة البيانات في ملف، يُستخدم os.WriteFile. يقوم بإنشاء ملف أو الكتابة فوقه.

package main

import ( "os")

func main() { content := []byte("مرحبًا بالعالم!هذا سطر للكتابة.") err := os.WriteFile("output.txt", content, 0644) if err != nil { panic(err) }}

لاحظ الوسيط الثالث — 0644. هذه هي صلاحيات الوصول للملف بنمط Unix (المالك يمكنه القراءة والكتابة، والباقي يمكنهم القراءة فقط).



القراءة والكتابة مع التخزين المؤقت

للملفات الكبيرة أو المعالجة التدفقية، استخدم bufio:

package main

import ( "bufio" "fmt" "os")

func main() { file, err := os.Open("large.txt") if err != nil { panic(err) } defer file.Close()

scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println("خطأ في المسح:", err) }}


2. العمل مع المجلدات

توفر Go دوالًا مريحة لإنشاء وحذف وقراءة المجلدات. توجد الدوال الرئيسية في الحزمة os.



إنشاء مجلد

لإنشاء مجلد واحد، استخدم os.Mkdir، وللمجلدات المتداخلة استخدم os.MkdirAll.

package main

import ( "os")

func main() { // إنشاء مجلد واحد err := os.Mkdir("newdir", 0755) if err != nil { panic(err) }

// إنشاء مجلدات متداخلة err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { panic(err) }}


قراءة محتويات مجلد

الدالة os.ReadDir تقوم بإرجاع قائمة بالعناصر الموجودة في المجلد (اعتبارًا من Go 1.16).

package main

import ( "fmt" "os")

func main() { entries, err := os.ReadDir(".") if err != nil { panic(err) }

for _, entry := range entries { fmt.Println(entry.Name(), entry.IsDir()) }}


حذف الملفات والمجلدات

للحذف، استخدم os.Remove (للملف أو المجلد الفارغ) و os.RemoveAll (للمجلد ومحتوياته).

المدونات

توصيات الكتب