Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ค้นหาไฟล์ใน Directory ใน Java

วิธีที่ 1: ใช้ File.list() + Loop + equals()

import java.io.File;
import java.util.Arrays;
import java.util.Scanner;

public class Example {
    public static void main(String[] argv) throws Exception {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the directory path:");
        String pathStr = sc.next();
        System.out.println("Enter the desired file name:");
        String fileName = sc.next();

        File dir = new File(pathStr);
        String[] list = dir.list();
        System.out.println(Arrays.toString(list));

        boolean found = false;
        for (String name : list) {
            if (fileName.equals(name)) { found = true; break; }
        }
        System.out.println(found ? "File Found" : "File Not Found");
    }
}

วิธีที่ 2: ใช้ FilenameFilter (Built-in Filtering)

import java.io.File;
import java.io.FilenameFilter;

public class Example {
    public static void main(String[] argv) throws Exception {
        File dir = new File("D:\\ExampleDirectory");

        FilenameFilter filter = (d, name) -> name.equalsIgnoreCase("demo1.pdf");
        String[] files = dir.list(filter);

        if (files == null || files.length == 0) {
            System.out.println("File Not Found");
        } else {
            System.out.println("File Found: " + Arrays.toString(files));
        }
    }
}

ผลลัพธ์ตัวอย่าง

Enter the directory path: D:\ExampleDirectory
Enter the desired file name: demo2.pdf
[demo1.pdf, demo2.pdf, sample directory1, ...]
File Found

ขยาย: ค้นหา Recursive (Subdirectories)

import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;

public class RecursiveSearch {
    public static void main(String[] args) throws IOException {
        Path start = Paths.get("D:\\ExampleDirectory");
        String target = "demo1.pdf";

        try (Stream stream = Files.walk(start)) {
            boolean found = stream.anyMatch(p -> p.getFileName().toString().equalsIgnoreCase(target));
            System.out.println(found ? "File Found" : "File Not Found");
        }
    }
}

สรุป

  • Top-level only: File.list() + loop หรือ File.list(FilenameFilter)
  • Recursive: Files.walk() + Stream Filter
  • FilenameFilter ใช้ Lambda สะดวก: (dir, name) -> name.endsWith(".pdf")