Rumah  >  Artikel  >  Java  >  Java bagaimana untuk menggelung melalui folder dan mendapatkan semua nama fail

Java bagaimana untuk menggelung melalui folder dan mendapatkan semua nama fail

PHPz
PHPzasal
2024-03-29 13:24:02948semak imbas

Java bagaimana untuk menggelung melalui folder dan mendapatkan semua nama fail

Java ialah bahasa pengaturcaraan yang popular dengan keupayaan pemprosesan fail yang berkuasa. Di Java, melintasi folder dan mendapatkan semua nama fail adalah operasi biasa, yang boleh membantu kami mencari dan memproses fail dengan cepat dalam direktori tertentu. Artikel ini akan memperkenalkan cara melaksanakan kaedah melintasi folder dan mendapatkan semua nama fail dalam Java, dan memberikan contoh kod khusus.

1. Gunakan kaedah rekursif untuk melintasi folder

Kita boleh menggunakan kaedah rekursif untuk melintasi folder. Berikut ialah contoh kaedah rekursif mudah:

import java.io.File;

public class FileTraversal {
    
    public static void main(String[] args) {
        File folder = new File("路径"); // 需要遍历的文件夹路径
        
        traverseFiles(folder);
    }
    
    public static void traverseFiles(File folder) {
        if (folder.isDirectory()) {
            File[] files = folder.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        traverseFiles(file); // 递归遍历子文件夹
                    } else {
                        System.out.println(file.getName()); // 输出文件名
                    }
                }
            }
        }
    }
}

2 Traverse folder menggunakan API Stream Java 8

Java 8 memperkenalkan API Strim, yang memudahkan pemprosesan koleksi dan tatasusunan. Kami boleh menggabungkan kaedah Files.walk() dan API Strim untuk berjalan melalui folder dan mendapatkan semua nama fail. Berikut ialah contoh menggunakan API Strim:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class FileTraversal {
    
    public static void main(String[] args) throws IOException {
        Path folder = Paths.get("路径"); // 需要遍历的文件夹路径
        
        try (Stream<Path> paths = Files.walk(folder)) {
            paths
                .filter(Files::isRegularFile) // 过滤只获取文件
                .forEach(path -> System.out.println(path.getFileName())); // 输出文件名
        }
    }
}

3 Traverse folder menggunakan kaedah Files.walkFileTree() Java 7

Jika anda menggunakan Java 7, anda boleh menggunakan kaedah Files.walkFileTree() untuk melintasi laluan. folder . Kaedah ini perlu melaksanakan antara muka FileVisitor dan mengatasi kaedah visitFile() untuk mendapatkan maklumat fail. Berikut ialah contoh penggunaan kaedah Files.walkFileTree():

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

public class FileTraversal {
    
    public static void main(String[] args) throws IOException {
        Path folder = Paths.get("路径"); // 需要遍历的文件夹路径
        
        Files.walkFileTree(folder, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                System.out.println(file.getFileName()); // 输出文件名
                return FileVisitResult.CONTINUE;
            }
        });
    }
}

Kesimpulan

Melalui tiga kaedah di atas, kita boleh melaksanakan fungsi merentasi folder dan mendapatkan semua nama fail dalam Java. Operasi ini boleh dicapai dengan mudah sama ada menggunakan kaedah rekursif, API Strim atau kaedah Files.walkFileTree(). Bergantung pada keperluan sebenar dan versi Java, pilih kaedah yang berbeza untuk traversal folder. Saya harap artikel ini dapat membantu anda Untuk pengetahuan lanjut tentang pengaturcaraan Java, sila ikuti blog kami.

Atas ialah kandungan terperinci Java bagaimana untuk menggelung melalui folder dan mendapatkan semua nama fail. 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