📜  java 获取目录中的文件 - Java (1)

📅  最后修改于: 2023-12-03 15:01:34.573000             🧑  作者: Mango

Java 获取目录中的文件

在Java中,我们可以使用File类来获取目录中的文件列表。File类提供了多种方法可以用来获取目录中的文件,包括:

  • list():获取目录中的所有文件名字符串数组。
  • listFiles():获取目录中的所有文件和子目录File对象数组。
  • listFiles(FileFilter filter):获取满足过滤器条件的目录中的所有文件和子目录File对象数组。

下面我们通过示例代码来演示如何获取目录中的文件,并将文件输出到控制台。

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        // 目录路径
        String dirPath = "/Users/username/Documents";
        File dir = new File(dirPath);
        
        // 判断目录是否存在
        if (dir.exists() && dir.isDirectory()) {
            // 获取目录中的所有文件名
            String[] fileList = dir.list();
            System.out.println("Directory " + dirPath + " contains files:");
            for (String file : fileList) {
                System.out.println(file);
            }
            
            // 获取目录中的所有文件和子目录File对象
            File[] files = dir.listFiles();
            System.out.println("Directory " + dirPath + " contains files and directories:");
            for (File file : files) {
                System.out.println(file.getName() + " (" + (file.isDirectory() ? "directory" : "file") + ")");
            }
            
            // 获取满足过滤器条件的目录中的所有文件和子目录File对象数组
            File[] textFiles = dir.listFiles(new MyFileFilter());
            System.out.println("Directory " + dirPath + " contains text files:");
            for (File file : textFiles) {
                System.out.println(file.getName() + " (" + (file.isDirectory() ? "directory" : "file") + ")");
            }
        } else {
            System.out.println("Directory " + dirPath + " doesn't exist or isn't a directory.");
        }
    }
}

class MyFileFilter implements FileFilter {
    public boolean accept(File file) {
        return file.isFile() && file.getName().endsWith(".txt");
    }
}

运行结果如下:

Directory /Users/username/Documents contains files:
file1.txt
file2.txt
file3.txt
Directory /Users/username/Documents contains files and directories:
file1.txt (file)
file2.txt (file)
file3.txt (file)
subdir (directory)
Directory /Users/username/Documents contains text files:
file1.txt (file)
file2.txt (file)

在上述示例代码中,我们使用了File类的list()、listFiles()和listFiles(FileFilter filter)方法来获取目录中的文件。

我们首先创建了一个File对象,表示要获取文件列表的目录。然后我们使用dir.exists()和dir.isDirectory()方法来检测目录是否存在和是否是一个目录,如果是,就调用list()、listFiles()和listFiles(FileFilter filter)方法来获取文件列表,最后输出到控制台。

在list()方法中,将目录中的所有文件名输出到控制台。

在listFiles()方法中,将目录中的所有文件和子目录File对象输出到控制台,并使用isDirectory()方法来判断是一个文件还是一个子目录。

在listFiles(FileFilter filter)方法中,我们使用自定义的MyFileFilter来筛选出所有扩展名为".txt"的文件,并将它们输出到控制台。

以上就是Java中获取目录中的文件的简单示例。通过这些方法,我们可以轻松地获取目录中的文件,并操作它们。