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
Susan Sarandonasal
2024-12-19 09:02:11111semak imbas

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);
}

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);

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:
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