Rumah >Java >javaTutorial >Bagaimanakah Java Boleh Menghitung Fail Secara Rekursif Secara Cekap?

Bagaimanakah Java Boleh Menghitung Fail Secara Rekursif Secara Cekap?

Susan Sarandon
Susan Sarandonasal
2024-12-19 17:11:101060semak imbas

How Can Java Efficiently Recursively Enumerate Files?

Menghitung Fail Secara Rekursif dengan Java

Meneroka pilihan untuk menyenaraikan fail secara rekursif di bawah direktori tertentu, kami menemui pelbagai pendekatan. Walaupun pelaksanaan "godam" wujud, rangka kerja Java sendiri menawarkan utiliti yang mantap untuk menyelaraskan tugas ini.

Pendekatan Diperkemas Java 8

Java 8 memperkenalkan penyelesaian berasaskan aliran yang mudah :

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

Pendekatan ini menyediakan cara yang elegan untuk melintasi fail dan menyokong pelbagai operasi strim seperti penapisan, pemetaan dan pengehadan.

Files.find: Penapisan pada Atribut Fail

Java juga menyediakan Files.find, yang menerima predikat dwi kepada tapis fail berdasarkan atribut:

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

While Files.find mungkin menawarkan pengoptimuman khusus apabila menapis pada atribut, prestasinya secara amnya setanding dengan Files.walk.

Perbandingan Prestasi

Apabila menilai pendekatan ini, kami mengesyorkan mempertimbangkan implikasi prestasi khusus berdasarkan penggunaan anda senario. Untuk mendapatkan cerapan yang lebih terperinci, rujuk projek GitHub dalam kemas kini jawapan, yang memberikan keputusan dan kes ujian.

Atas ialah kandungan terperinci Bagaimanakah Java Boleh Menghitung Fail Secara Rekursif Secara 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