1. هناك طريقتان لاجتياز جميع الملفات في مجلد في جافا:
1. اجتياز العودية هو عادة الطريقة الأولى التي يمكن للمطورين التفكير فيها. مزايا اجتياز العودية هي: من السهل نسبيًا تنفيذها ، وكمية الكود صغيرة نسبيًا ، وكفاءة التنفيذ عالية. العيب هو: إنه يستهلك المزيد من الذاكرة ويتطلب أجهزة عالية.
// TRAVERSER PRIVALED PRIGART VOID GETDIRECTORY (ملف الملف) {file flist [] = file.listfiles () ؛ if (flist == null || flist.length == 0) {return 0 ؛ } لـ (file f: flist) {if (f.isdirectory ()) {// سيتم سرد جميع المجلدات هنا system.out.println ("dir ==>" + f.getabsolutepath ()) ؛ getDirectory (F) ؛ } آخر {// سيتم سرد جميع الملفات هنا system.out.println ("file ==>" + f.getabsolutepath ()) ؛ }}}2. اجتياز غير متكرر. من السهل فهم اجتياز العودية ، لكن ربما ليس من السهل التفكير في الأمر. فكرت لفترة طويلة ووجدت أن جافا لديها شيء LinkedList. أعرف حرفيًا أن هذا يستخدم لحفظ قائمة الملفات المرتبطة. إذا كان هذا مجلد ، فسيكون من السهل القيام به. الفكرة المحددة هي: عند عبور المجلد ، إذا كان مجلد ، فسيتم إضافته إلى LinkedList ، وإذا كان ملفًا ، فسيتم إدراجه ؛ وبهذه الطريقة ، يتم اجتياز الملفات والمجلدات الموجودة في الدليل ، ويتم حفظ جميع المجلدات إلى L في قائمة Inkedlist ؛ إذن ما تبقى هو اجتياز الملفات في LinkedList. طريقة اجتياز هي نفس العملية أعلاه. إذا كان مجلدًا ، يتم إضافته إلى LinkedList (PS: قائمة LinkedList أثناء عملية التجارة هي دائمًا نفس القائمة). بالطبع ، بعد إخراج كل مجلد من القائمة ، يجب حذف المجلد من القائمة. فيما يلي linkedList.RemoveFirst () للقراءة ، بحيث تتم قراءة العنصر الأول من القائمة وإزالته من القائمة. وبهذه الطريقة ، طالما أنك تعبر إلى حالة LinkedList ISEMTY ، فهذا يعني أنه تم الانتهاء من التمرير.
///starversal private void getDirectorySize (ملف ملف) {LinkedList قائمة = new LinkedList () ؛ // حفظ قائمة المجلدات المراد اجتيازها getOnedir (ملف ، قائمة) ؛ // استدعاء الطريقة لاجتياز ملف جذر ملف TMP ؛ بينما (! list.isempty ()) {tmp = (file) list.removefirst () ؛ // الحكم في هذا المكان زائدة بعض الشيء ، ولكن من أجل التأمين ، لا يزال حكمًا. عادة ، لا يوجد سوى مجلدات في القائمة // ولكن لا يتم استبعاد الحالات الخاصة ، على سبيل المثال: الهدف الذي هو المجلد نفسه يصبح ملفًا بعد دفعه إلى المكدس إذا (tmp.isdirectory ()) {getOnedIrsize (tmp ، list) ؛ tmp.getabsolutepath ()) ؛}}}} // اجتياز الملف في الدليل الجذر للمجلد المحدد void getOnedir (ملف الملف ، قائمة LinkedList) {// هذه الطريقة سيتم استدعاؤها لكل نموذج + = 1 ؛ if (files == null || files.length == 0) {return ؛} for (file f: files) {if (f.isdirectory ()) {list.add (f) ؛} else {// هذا يسرد جميع الملفات في الدليل الجذري للنظام الحالي.2. استخدم جافا لاجتياز مجلد والحصول على جميع المحتويات فيه
حزمة Demo0823 ؛ import java.io.file ؛ import java.util.arraylist ؛ public class fileTest {private static arraylist <string> fileList = new ArrayList <string> () ؛ public static void main (string [] filepath) {file root = file new (filepath) ؛ file [] files = root.listfiles () ؛ for (file file: files) {if (file.isdirectory ()) {// إذا كان الملف دليل getFiles (file.getabsolutepath ()) ؛ fileList.add (file.getabsolutepath ()) ؛ system.out.println ("إظهار جميع الأمرين الفرعيين وملفاتهم تحت"+filepath+""+file.getabsolutepath ()) ؛ تحت "+filepath+" "+file.getabsolutepath ()) ؛}}}}صورة التكاثر:
لخص
ما سبق هو الكود الكامل لهذه المقالة حول اجتياز الملفات في مجلد خلفية Java. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!