Pengenalan
Penyenaraian fail rekursif ialah tugas biasa yang melibatkan merentasi direktori dan subdirektori untuk mendapatkan semula senarai semua fail dalam laluan yang ditentukan. Di Java, terdapat berbilang pendekatan untuk mencapai ini menggunakan perpustakaan terbina dalam dan pihak ketiga.
Java 8 (Menggunakan Files.walk)
Java 8 diperkenalkan cara yang berkuasa untuk memproses fail melalui kaedah Files.walk, yang menyediakan aliran objek Path yang mewakili semua fail dalam pepohon direktori. Untuk menyenaraikan semua fail biasa di bawah direktori, anda boleh menggunakan kod berikut:
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
Pendekatan ini menawarkan cara yang mudah dan mudah untuk melintasi pepohon fail dan melaksanakan operasi pada fail individu, seperti mencetak nama mereka atau melakukan pemprosesan tambahan.
Java 8 (Menggunakan Files.find)
Java 8 juga memperkenalkan kaedah Files.find, yang membolehkan anda mencari fail berdasarkan predikat penapis. Untuk penyenaraian fail rekursif, anda boleh menggunakan penapis untuk menyemak fail biasa:
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
Walaupun Files.find mungkin lebih cekap jika anda perlu menapis berdasarkan atribut fail, tiada prestasi yang ketara perbezaan antara Files.walk dan Files.cari apabila hanya menyenaraikan fail biasa.
Perbandingan dengan Lain Pendekatan
Pendekatan berasaskan aliran Java 8 menawarkan kelebihan ketara berbanding pelaksanaan rekursif atau godam tradisional. Ia menyediakan cara ringkas dan ekspresif untuk mengendalikan penyenaraian fail rekursif, menjadikannya lebih mudah untuk membaca, menyelenggara dan memanjangkan kod anda.
Atas ialah kandungan terperinci Bagaimana untuk Menyenaraikan Fail secara Rekursif dalam Java Menggunakan `Files.walk` dan `Files.find` Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!