Rumah > Java > javaTutorial > Bagaimana untuk Melintasi Direktori Fail dan Subdirektorinya dengan Cekap di Jawa?

Bagaimana untuk Melintasi Direktori Fail dan Subdirektorinya dengan Cekap di Jawa?

Susan Sarandon
Lepaskan: 2024-12-20 04:23:09
asal
747 orang telah melayarinya

How to Efficiently Traverse a File Directory and Its Subdirectories in Java?

Lelaran Melalui Subdirektori Direktori Fail dalam Java

Apabila bekerja dengan fail dalam Java, selalunya perlu untuk mengakses bukan sahaja fail dalam direktori tetapi juga dalam subdirektorinya. Ini menimbulkan persoalan: bagaimanakah kita boleh menavigasi dengan cekap melalui direktori dan subdirektorinya dalam Java?

Rekursi: Pendekatan Standard

Teknik standard untuk lelaran direktori melibatkan penggunaan rekursi. Dengan menguji sama ada fail yang diberikan ialah direktori menggunakan kaedah File#isDirectory(), anda secara rekursif memanggil kaedah yang sama dengan hasil File#listFiles()nya.

Coretan kod berikut menunjukkan pendekatan rekursif ini:

import java.io.File;

public class Demo {

    public static void main(String... args) {
        File dir = new File("/path/to/dir");
        showFiles(dir.listFiles());
    }

    public static void showFiles(File[] files) {
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.println("Directory: " + file.getAbsolutePath());
                showFiles(file.listFiles()); // Calls same method again.
            } else {
                System.out.println("File: " + file.getAbsolutePath());
            }
        }
    }
}
Salin selepas log masuk

Alternatif Java 8: Rekursi Ekor dengan Files#walk()

Untuk Java 8 dan versi yang lebih baru, kaedah Files#walk() menyediakan alternatif kepada rekursi. Ia menggunakan rekursi ekor, mengelakkan risiko StackOverflowError dalam situasi dengan pepohon direktori dalam.

Begini cara menggunakan Files#walk() untuk lelaran direktori:

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DemoWithJava8 {

    public static void main(String... args) throws Exception {
        Path dir = Paths.get("/path/to/dir");
        Files.walk(dir).forEach(path -> showFile(path.toFile()));
    }

    public static void showFile(File file) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getAbsolutePath());
        } else {
            System.out.println("File: " + file.getAbsolutePath());
        }
    }
}
Salin selepas log masuk

Kesimpulan

Dengan memanfaatkan rekursi dengan File#isDirectory() dan File#listFiles() atau dengan menggunakan Files#walk() dalam Java 8 , anda boleh mengulangi dengan berkesan melalui kedua-dua fail direktori dan fail subdirektori dalam aplikasi Java.

Atas ialah kandungan terperinci Bagaimana untuk Melintasi Direktori Fail dan Subdirektorinya dengan Cekap di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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