Rumah > Java > javaTutorial > Bagaimanakah `Files.walk()` dan `Files.find()` Java 8 Boleh Memperkemas Penyenaraian Fail Rekursif?

Bagaimanakah `Files.walk()` dan `Files.find()` Java 8 Boleh Memperkemas Penyenaraian Fail Rekursif?

Susan Sarandon
Lepaskan: 2024-12-19 09:02:11
asal
192 orang telah melayarinya

How Can Java 8's `Files.walk()` and `Files.find()` Streamline Recursive File Listing?

Penyenaraian Fail Rekursif dalam Java: Diperkemas dengan Penambahbaikan Rangka Kerja

Latar Belakang:

Lelaran berakhir semua fail dalam struktur direktori adalah keperluan biasa dalam pengaturcaraan Java. Walau bagaimanapun, banyak pelaksanaan cenderung menjadi rumit dan kekurangan sokongan rangka kerja.

Penyelesaian Rangka Kerja (Java 8 ): Files.walk() dan Files.find()

Java 8 memperkenalkan mekanisme elegan untuk fail lelaran:

  • Files.walk(): Merentasi direktori secara rekursif, menyediakan aliran objek Path yang mewakili fail individu.
  • Files.find (): Menerima penapis BiPredicate, membolehkan traversal yang lebih cekap berdasarkan fail atribut.

Contoh Kod:

Menggunakan Files.walk(), anda boleh menyenaraikan semua fail biasa secara rekursif di bawah direktori yang ditentukan seperti berikut:

try (Stream<Path> stream = Files.walk(Paths.get(path))) {
    stream.filter(Files::isRegularFile)
          .forEach(System.out::println);
}
Salin selepas log masuk

Penapisan Bersyarat (Pilihan):

Jika penapisan atribut fail diperlukan, Files.find() menawarkan kecekapan yang dipertingkatkan:

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);
Salin selepas log masuk

Pertimbangan Prestasi:

Files.walk() dan Files.find() secara amnya berprestasi sama dalam amalan. Walau bagaimanapun, Files.find() mungkin sedikit lebih cekap apabila menapis berdasarkan atribut.

Nota Tambahan:

  • Files.walk() menyediakan aliran- fleksibiliti berasaskan untuk pemprosesan selanjutnya, seperti mengehadkan, mengumpulkan atau pemetaan.
  • Files.find() menawarkan penapis khusus antara muka, yang boleh memudahkan semakan atribut kompleks.

Atas ialah kandungan terperinci Bagaimanakah `Files.walk()` dan `Files.find()` Java 8 Boleh Memperkemas Penyenaraian Fail Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan