كلغة برمجة ، تحتوي Go على مجموعة واسعة من الميزات المضمنة ، بما في ذلك القدرة على إنشاء ملفات مثل ملفات نصية (.txt) وقراءتها وكتابتها.

تعد الملفات مكونات مهمة في حياتنا اليومية في العالم الحديث. تعد الملفات النصية مفيدة لتخزين البيانات المهيكلة القابلة للقراءة البشرية دون استخدام برامج أو قواعد بيانات خارجية.

إذا كنت تتساءل كيف يمكنك البدء في معالجة الملفات النصية في Go ، فهذه المقالة هي المكان المناسب لك.

حزمة bufio في Go

ال بوفيو تُستخدم الحزمة ، وهي جزء من مكتبة Go القياسية ، لعمليات الإدخال والإخراج المخزنة ، ومن هنا جاء الاسم. ال بوفيو الحزمة تعتمد على io. قارئ و io. كاتب الواجهات ، والتي تُستخدم على نطاق واسع في تنفيذ غالبية حزم Go القياسية.

ال بوفيو تذهب الحزمة خطوة أخرى إلى الأمام من خلال تنفيذ التخزين المؤقت ، مما يجعلها مفيدة لعمليات الإدخال / الإخراج التي تتضمن بيانات نصية.

لاستخدام ال بوفيو الحزمة في برنامجك ، يجب عليك استيرادها جنبًا إلى جنب مع الحزم الأخرى.

يستورد (
"FMT"
"بوفيو"
)

ربما سمعت عندما كنت بدأت مع Go أنه يأتي مع كل ما قد تحتاجه كمبرمج. للاتصال المباشر بنظام التشغيل الخاص بك ، هناك حزمة تسمى نظام التشغيل التي توفر وظائف مستقلة عن النظام الأساسي.

instagram viewer

ال نظام التشغيل و بوفيو تجعل الحزم معالجة الملفات النصية بسيطة بشكل لا يصدق.

على الرغم من أن الغالبية العظمى من نظام التشغيل وظائف الحزمة تشبه Unix ، وكلها تستخدم أسلوب Go لمعالجة الأخطاء ، مما يجعل من السهل قراءة رسائل الخطأ وتصحيح الأخطاء البرمجية.

لذا ، كيف تتعامل مع الملفات التي تحتوي على نص في Go؟

كيف تقرأ البيانات من ملف نصي

لقراءة البيانات من الملفات النصية ، تحتاج إلى استدعاء نظام التشغيل الحزمة يفتح() دالة ، والتي تقبل اسم الملف المراد قراءته كمعامل. هناك طريقة أخرى للحصول على الملف وهي باستخدام امتداد الملف OpenFile () وظيفة.

الفرق الرئيسي بين يفتح() و OpenFile () في تنفيذها. يفتح() يفتح ملفًا في وضع القراءة فقط (بامتداد O_RDONLY العلم) ، بينما OpenFile () يعطي مزيدًا من المرونة من خلال قبول ثلاثة معايير وهي:

  • اسم الملف
  • وضع فتح الملف: يتم عرض أوضاع فتح الملف الصالحة في الجدول أدناه.
    علَم معنى
    O_RDONLY يفتح الملف في وضع القراءة فقط
    O_WRONLY يفتح الملف في وضع الكتابة فقط
    O_RDWR يفتح الملف في وضع القراءة والكتابة
    O_APPEND يلحق البيانات بالملف عند الكتابة
    O_CREATE ينشئ ملفًا جديدًا إذا لم يكن موجودًا
    O_EXCL تُستخدم مع O_CREATE ، للإشارة إلى أنه يجب إنشاء الملف فقط في حالة عدم وجوده
    O_SYNC يفتح الملف للإدخال / الإخراج المتزامن
    O_TRUNC اقتطع الملف عند الفتح ، إن أمكن
  • أذونات الملف: نفس ملف بت إذن الملف في لينكس تستخدم لتحديد قواعد الوصول إلى الملفات ، على سبيل المثال ، 0777 لمنح أذونات القراءة والكتابة والتنفيذ لجميع أنواع المستخدمين.

يوضح الكود أدناه كيفية قراءة البيانات من ملف نصي في Go using نظام التشغيل. يفتح()، و مسح () والذي في هذه الحالة يعمل في اذهب للحلقة.

طَرد رئيسي
يستورد (
"بوفيو"
"FMT"
"سجل"
"نظام التشغيل"
)
/**
محتوى "testfile.txt" ملف.
أبجد هوز دولور الجلوس امات
أبجد هوز دولور الجلوس امات
أبجد هوز دولور الجلوس امات
أبجد هوز دولور الجلوس امات
أبجد هوز دولور الجلوس امات
أبجد هوز دولور الجلوس امات
*/
func رئيسي(){
ملف ، يخطئ: = نظام التشغيل. يفتح("testfile.txt")
// طريقة أخرى باستخدام نظام التشغيل. OpenFile ()
// ملف ، يخطئ = نظام التشغيل. OpenFile ("testfile.txt"، نظام التشغيل. O_RDONLY ، 0644)
إذا أخطأت! = لا شيء {
سجل.مميت(يخطئ)
}
تأجيلملف.يغلق()
FMT. Println ("تم فتح الملف بنجاح. تقرأ الآن محتويات الملف سطرًا بسطر:")
// يخلق الماسح الضوئي من ال ملفليقرأنصمن
الماسح الضوئي: = bufio. NewScanner (ملف)
// مسح أو قراءة بايت النص سطراً بسطر
لالماسح الضوئيتفحص() {
FMT.Println(الماسح الضوئي.نص())
}
إذا يخطئ: = الماسح الضوئي. Err () ؛ يخطئ! = لا شيء {
سجل.مميت(يخطئ)
}
}

عند تشغيل الكود أعلاه مع اذهب تشغيل filename.go، ينتج الناتج الموضح أدناه:

إذا قمت بتمرير اسم الملف فقط وليس المسار إلى ملف يفتح() أو OpenFile () وظيفة لعمليات القراءة ، يفترض Go أن الملف موجود في الدليل الحالي ويعيد خطأ إذا لم يعثر عليه. يجب عليك تمرير المسار إلى الملف إذا كنت بحاجة للعمل مع ملفات خارج الدليل الحالي.

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

ال بوفيو توفر الحزمة ملف كاتب واجهة تخزن بايت من البيانات وتكتبها في ملف بمساعدة ملف دافق () وظيفة.

نموذج التعليمات البرمجية التالي هو استمرار لقراءة ملف. في هذا المثال ، تتم كتابة البيانات إلى الملف الحالي testfile.txt باستخدام O_WRONLY و O_APPEND الأعلام.

أضف سطور التعليمات البرمجية التالية إلى البرنامج أعلاه ، قبل قوس الإغلاق المتعرج لملف رئيسي() وظيفة:

// كتابة بيانات الإخراج إلى ملف
ملف ، يخطئ = نظام التشغيل. OpenFile ("testfile.txt" ، نظام التشغيل. O_APPEND | نظام التشغيل O_WRONLY ، 0644)
لو يخطئ! لا شيء {
سجل. فادح (يخطئ)
}
تأجيل ملف. يغلق()
FMT. Println ("تم فتح الملف بنجاح ، يتم الآن التحضير لكتابة البيانات إلى ملف ...")
// إنشاء كائن الكاتب المخزن لكتابة البيانات إلى الملف
textWriter: = bufio. NewWriter (ملف)
// كتابة سلسلة إلى المخزن المؤقت قبل حفظ الملف.
_ ، يخطئ = textWriter. WriteString ("- هذا ملف جديد تمت إضافة النص إلى الملف. ")
لو يخطئ! لا شيء {
سجل. فادح (يخطئ)
}
textWriter. دافق ()
FMT. Println ("تمت كتابة البيانات للملف بنجاح ...")

يجب أن تبدو مخرجات برنامجك الكامل كما يلي:

عندما تفتح ملف testfile.txt الملف ، سترى أيضًا السطر الجديد ملحقًا في نهاية الملف تمامًا مثل الصورة أدناه:

من السهل التعامل مع الملفات في Go

يتيح لك Go العمل مع مجموعة متنوعة من الملفات ، وليس فقط الملفات النصية. هناك العديد من المكتبات والوظائف الإضافية المدمجة للعمل مع أنواع مختلفة من البيانات من الملفات ، بما في ذلك JSON و CSV.

لمعرفة كيف يتصرفون بشكل مختلف بناءً على الموقف ، يمكنك تجربة العلامات المختلفة وأذونات الملفات المتاحة للاستخدام مع OpenFile ().