Rumah >Java >javaTutorial >Bagaimanakah `Files.walk` dan `Files.find` Java Boleh Digunakan untuk Traversal Pokok Fail Rekursif yang Cekap?

Bagaimanakah `Files.walk` dan `Files.find` Java Boleh Digunakan untuk Traversal Pokok Fail Rekursif yang Cekap?

Susan Sarandon
Susan Sarandonasal
2024-12-21 10:52:10420semak imbas

How Can Java's `Files.walk` and `Files.find` Be Used for Efficient Recursive File Tree Traversal?

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!

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