"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني التكرار من خلال شجرة دليل في جافا؟

كيف يمكنني التكرار من خلال شجرة دليل في جافا؟

نشر في 2025-02-06
تصفح:693

How Can I Iterate Through a Directory Tree in Java?

دليل محدد. ويشمل ذلك الدلائل الفرعية ، مما يوفر وصولاً شاملاً إلى شجرة الدليل بأكملها. في Java ، هناك مناهج قياسية لتحقيق هذه الوظيفة. يتم استخدامها لتحديد ما إذا كان الملف يمثل دليلًا أو ملفًا. إذا كان الملف المحدد دليلًا ، فهو يحتوي على قائمة بالملفات والأدلة ، والتي يمكن الحصول عليها باستخدام طريقة ListFiles (). نهج مباشر للتكرار من خلال شجرة الدليل هو استخدام العودية. يوضح المقتطف التالي هذه الطريقة:

استيراد java.io.file ؛ دليل الطبقة العامة { الفراغ الثابت العام الرئيسي (سلسلة [] args) { دليل الملف = ملف جديد ("/path/to/dir") ؛ showfiles (directory.listfiles ()) ؛ } showfiles public static void (ملفات []]) { لـ (ملف الملف: الملفات) { if (file.isdirectory ()) { system.out.println ("directory:" file.getabsolutepath ()) ؛ showfiles (file.listfiles ()) ؛ // مكالمة متكررة } آخر { system.out.println ("file:" file.getabsolutepath ()) ؛ } } } }

يعمل هذا النهج عن طريق الاتصال بشكل متكرر showfiles () في قائمة الملفات التي تم إرجاعها بواسطة ListFiles (). ومع ذلك ، من المهم التعامل مع استثناء StackOverFlowerror ، والذي يمكن أن يحدث إذا كانت شجرة الدليل عميقة جدًا بحيث لا يمكن التعامل معها. ]

لـ Java 8 وبعد ذلك ، يتمثل نهج أكثر كفاءة في استخدام الملفات#Walk (). تنفذ هذه الطريقة عودة الذيل ، والتي تتجنب مشكلة stackoverflowerror من خلال الحفاظ على حالة التكرار في مكدس استدعاء الطريقة بدلاً من مكدس JVM.

استيراد java.nio.file.files ؛ استيراد java.nio.file.path ؛ استيراد java.nio.file.paths ؛ دليل الطبقة العامة الفراغ الثابت العام (سلسلة [] args) يلقي الاستثناء { دليل المسار = paths.get ("/path/to/dir") ؛ files.walk (دليل). } public static void showfile (ملف ملف) { if (file.isdirectory ()) { system.out.println ("directory:" file.getabsolutepath ()) ؛ } آخر { system.out.println ("file:" file.getabsolutepath ()) ؛ } } }

ملفات#walk () تقوم بإنشاء دفق من كائنات المسار التي تمثل الملفات والأدلة في شجرة الدليل المحددة. ثم يتم استخدام طريقة foreach () لمعالجة كل كائن مسار وعرض الملف أو الدليل المقابل.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3