يشير اجتياز الدليل أو المشي على الدليل إلى عملية التكرار عبر الملفات والأدلة داخل دليل معين وأدلة فرعية داخل نظام الملفات.
يعد التنقل في الدليل مهمة مفيدة جدًا عندما تحتاج إلى جمع معلومات حول دليل معين. يمكن أن يسمح لك أيضًا بإنشاء أداة مساعدة مخصصة لقائمة الدليل مصممة خصيصًا لتلبية احتياجاتك.
في هذا البرنامج التعليمي، سوف نستكشف جميع الأساليب والتقنيات المتنوعة التي يمكننا استخدامها لتنفيذ الدليل باستخدام لغات البرمجة Go.
المشي في دليل جولانج
دعونا نتعرف على هذه الطرق لمساعدتنا في فهم معنى المشي على الدليل.
الطريقة الأولى: استخدام Filepath.Walk
يوفر لنا filepath.Walk طريقة فعالة وسهلة لاجتياز الأدلة في Go. وهو متوفر في حزمة 'filepath' التي تعد جزءًا من مكتبة Golang القياسية والتي تزيل الموثوقية على الحزم الخارجية.
إحدى مزايا أو عيوب هذه التقنية هي أنها تلخص الكثير من التطبيقات ذات المستوى المنخفض لاجتياز الدليل. يمكن أن يكون هذا مفيدًا عندما تحتاج إلى طريقة سريعة وفعالة. ومع ذلك، إذا كنت بحاجة إلى مزيد من التحكم، فقد تحتاج إلى البحث بشكل أعمق.
عند استخدام وظيفة 'المشي'، يمكنك توفير وظيفة 'رد الاتصال' التي سيتم استدعاؤها لكل ملف أو دليل تمت زيارته.
توقيع وظيفة 'رد الاتصال' هو كما يلي:
func ( سلسلة المسار، معلومات fs.DirEntry، خطأ خطأ ) خطأ
تدعم الوظيفة المعلمات التالية:
-
- المسار - يحدد المسار الكامل للملف أو الدليل.
- معلومات - يحتوي على معلومات حول الملف أو الدليل.
- خطأ - يشير إلى خطأ قد يحدث أثناء الاجتياز.
دعونا نلقي نظرة على مثال حول كيفية استخدام هذه الطريقة لإجراء جولة الدليل الأساسية:
الحزمة الرئيسيةيستورد (
'إف إم تي'
'سجل'
'أنت'
'المسار/مسار الملف'
)
الوظيفة الرئيسية ( ) {
يخطئ := filepath.Walk ( '/usr/المحلية' ,
func ( سلسلة المسار، معلومات os.FileInfo، خطأ خطأ ) خطأ {
لو يخطئ ! = لا شيء {
يعود يخطئ
}
fmt.Println ( المسار، المعلومات. الحجم ( ) )
يعود لا شيء
} )
لو يخطئ ! = لا شيء {
سجل.طباعةلن ( يخطئ )
}
}
في هذه الحالة، نقوم بتنفيذ دليل أساسي باستخدام الدالة filepath.Walk() ونطبع مسار كل ملف بالإضافة إلى الحجم. في حالة حدوث خطأ، أثناء الاجتياز، نقوم بتسجيله باستخدام Println من حزمة 'السجل'.
الطريقة الثانية: استخدام Ioutil.ReadDir
التقنية الثانية التي يمكننا استخدامها لاجتياز دليل في Go هي استخدام وظيفة 'ReadDir' من الحزمة io/ioutil.
رمز المثال هو كما يلي:
الحزمة الرئيسيةيستورد (
'إف إم تي'
'io/ioutil'
'سجل'
'أنت'
'المسار/مسار الملف'
)
الوظيفة الرئيسية ( ) {
الملفات، يخطئ := ioutil.ReadDir ( '/usr/المحلية' )
لو يخطئ ! = لا شيء {
سجل. فادح ( يخطئ )
}
ل _، f := ملفات النطاق {
fmt.Println ( و. الاسم ( ) )
}
يخطئ = filepath.Walk ( '/usr/المحلية' ,
func ( سلسلة المسار، معلومات os.FileInfo، خطأ خطأ ) خطأ {
لو يخطئ ! = لا شيء {
يعود يخطئ
}
fmt.Println ( المسار، المعلومات. الحجم ( ) )
يعود لا شيء
} )
لو يخطئ ! = لا شيء {
سجل.طباعةلن ( يخطئ )
}
}
يبدأ الكود بسرد أسماء الملفات والأدلة في المسار المحدد. ثم يستخدم Walk() للتنقل بشكل متكرر عبر نفس الدليل أثناء طباعة مسار كل ملف وحجمه.
خاتمة
في هذا البرنامج التعليمي، قدمنا لك مفهوم المشي على الدليل والذي يُعرف أيضًا باسم اجتياز الدليل. لقد أظهرنا لك أيضًا الطريقتين الرئيسيتين اللتين يمكنك استخدامهما لتنفيذ الدليل في لغة Go.