دليل للعمل مع ملفات نصية في Go

دليل للعمل مع ملفات نصية في Go

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





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





اجعل فيديو اليوم

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





حزمة bufio في Go

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

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



كيف يمكنني حذف حساب البريد الساخن الخاص بي

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

import ( 
"fmt"
"bufio"
)

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





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

على الرغم من أن الغالبية العظمى من أنت وظائف الحزمة تشبه 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 os.Open () ، و مسح () والذي في هذه الحالة يعمل في اذهب للحلقة .

package main 
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "testfile.txt" file.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func main() {
file, err := os.Open("testfile.txt")
// another method using os.OpenFile()
// file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
// scan or read the bytes of text line by line
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}

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

  إخراج البرنامج لقراءة النص من الملف