كتابة الملفات والملفات المؤقتة
WriteFile وخيارات OpenFile والملفات المؤقتة
كتابة الملفات والملفات المؤقتة درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
os.WriteFile
تكتب os.WriteFile شريحة من البايتات إلى ملف بشكل ذري، إذ تفرغ الملف ثم تكتب فيه. وهي طريقة بسيطة للملفات الصغيرة.
err := os.WriteFile("output.txt", []byte("hello"), 0644)
if err != nil { log.Fatal(err) }os.Create وdefer Close
تنشئ os.Create ملفًا أو تفرغه، وتعيد *os.File. أغلقوه دائمًا باستخدام defer.
f, err := os.Create("output.txt")
if err != nil { return err }
defer f.Close()
f.WriteString("hello\n")os.OpenFile مع الأعلام
استخدموا os.OpenFile لأوضاع الإلحاق أو الإنشاء عند عدم وجود الملف أو الإنشاء الحصري:
f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)bufio.Writer
غلّفوا ملفًا باستخدام bufio.NewWriter لتجميع عمليات الكتابة الصغيرة في استدعاءات نظام أكبر. استدعوا Flush() قبل الإغلاق لكتابة أي بيانات مخزّنة مؤقتًا.
w := bufio.NewWriter(f)
fmt.Fprintf(w, "line %d\n", i)
w.Flush()fmt.Fprintf
اكتبوا نصًا منسقًا إلى أي io.Writer، بما في ذلك الملفات:
fmt.Fprintf(f, "name: %s, age: %d\n", name, age)نمط الكتابة الذرية للملفات
اكتبوا في ملف مؤقت، ثم أعدوا تسميته إلى اسم الوجهة. تكون إعادة التسمية ذرية في POSIX؛ إذ يرى القارئون الملف القديم أو الجديد، وليس كتابة جزئية أبدًا.
tmp, _ := os.CreateTemp("", "output-*.txt")
tmp.Write(data)
tmp.Close()
os.Rename(tmp.Name(), "output.txt")os.CreateTemp
تنشئ os.CreateTemp(dir, pattern) ملفًا مؤقتًا في dir باسم فريد يطابق pattern. وتعيد الملف مفتوحًا. ويتحمل المستدعي مسؤولية حذفه.
f, err := os.CreateTemp("", "upload-*.json")
defer os.Remove(f.Name()) // cleanupos.MkdirTemp
تنشئ os.MkdirTemp دليلًا مؤقتًا. استخدموه لملفات الاختبار أو مسارات المعالجة التي تنشئ عدة ملفات مؤقتة.
dir, err := os.MkdirTemp("", "batch-*")
defer os.RemoveAll(dir)أذونات الملفات
مرّروا بتات أذونات Unix، مثل 0644 للمالك قراءة وكتابة، وللمجموعة قراءة، وللآخرين قراءة، باعتبارها الوسيطة الأخيرة إلى الدوال التي تشبه Create. وقد يقيّدها قناع umask الخاص بالعملية أكثر.
فحص أخطاء الكتابة
قد تعيد f.WriteString وfmt.Fprintf أخطاءً، مثل امتلاء القرص أو عدم كفاية الأذونات. افحصوا الأخطاء أو اجمعوها باستخدام غلاف للكاتب يسجل أول خطأ.
sync.File غير آمن للتزامن
قد تتداخل عمليات الكتابة عند كتابة عدة goroutines إلى *os.File نفسه بشكل متزامن. استخدموا قفلًا أو goroutine واحدة مخصصة للكتابة.
اختبار سريع
لماذا يُعدّ نمط الكتابة في ملف مؤقت ثم إعادة تسميته ذريًا؟
مراجعة: كتابة الملفات
النقاط الرئيسية:
- os.WriteFile: استبدال بسيط؛ bufio.Writer: تجميع عمليات الكتابة الصغيرة
- الكتابة الذرية: ملف مؤقت ثم إعادة تسمية
- استخدموا os.CreateTemp وos.MkdirTemp للموارد المؤقتة؛ وأجّلوا التنظيف دائمًا باستخدام defer
- افحصوا أخطاء الكتابة؛ ونسّقوا عمليات الكتابة المتزامنة
الأسئلة الشائعة
هل درس «كتابة الملفات والملفات المؤقتة» مجاني؟
نعم — نص درس «كتابة الملفات والملفات المؤقتة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «كتابة الملفات والملفات المؤقتة»؟
WriteFile وخيارات OpenFile والملفات المؤقتة تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «كتابة الملفات والملفات المؤقتة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الملفات باستخدام os وbufio
- كتابة الملفات والملفات المؤقتة
- ترميز JSON وفك ترميزه
- بث JSON وCSV