Java File Tree Traversal: Rekursif Penyenaraian Penguasaan
Rekursif sistem fail boleh menjadi tugas yang sukar, tetapi Java menawarkan beberapa pendekatan untuk memudahkan proses ini.
Java 8 memperkenalkan alat berkuasa untuk pengendalian fail: Files.walk. Kaedah ini menyediakan pendekatan berasaskan strim yang merentasi pepohon direktori tertentu secara rekursif, mengembalikan aliran objek Path.
Untuk menyenaraikan semua fail dalam direktori secara rekursif menggunakan Files.walk:
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
Penyelesaian berasaskan aliran ini membolehkan manipulasi fleksibel senarai fail. Sebagai contoh, anda boleh mengehadkan carian, mengumpulkan fail berdasarkan atribut atau menamatkan traversal lebih awal.
Java juga menyediakan Files.find, yang mengambil BiPredicate sebagai hujah. Kaedah ini menggunakan pendekatan yang lebih dioptimumkan apabila menyemak atribut fail.
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
Dari segi prestasi, Files.find mungkin lebih cekap sedikit daripada Files.walk jika anda turut mendapatkan semula atribut fail dalam penapis anda.
Untuk meringkaskan, Files.walk menawarkan pendekatan berasaskan aliran yang mudah, manakala Files.find menyediakan penyelesaian yang dioptimumkan untuk penapisan berasaskan atribut. Pilih kaedah yang paling sesuai dengan keperluan anda untuk fleksibiliti dan prestasi.
Atas ialah kandungan terperinci Bagaimanakah `Files.walk` dan `Files.find` Java Boleh Digunakan untuk Traversal Pokok Fail Rekursif yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!