如何在 Java 中获取文件夹中所有文件/文件夹的列表?

java 8object oriented programmingprogramming

java.io 包中名为 File 的类表示系统中的文件或目录(路径名)。此类提供各种方法来对文件/目录执行各种操作。

要获取目录中所有现有文件的列表,此类提供的文件类提供具有不同变体的 list()(返回名称)和 ListFiles()(返回 File 对象)。

List() 方法

此方法返回一个 String 数组,其中包含当前 (File) 对象所表示的路径中的所有文件和目录的名称。

使用此方法,您可以只打印文件和目录的名称。

示例

以下 Java 程序列出了路径 D:\ExampleDirectory 中的所有文件和目录的名称。

import java.io.File;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      //List of all files and directories
      String contents[] = directoryPath.list();
      System.out.println("指定目录中的文件和目录列表:");
      for(int i=0; i<contents.length; i++) {
         System.out.println(contents[i]);
      }
   }
}

输出

指定目录中的文件和目录列表:
SampleDirectory1
SampleDirectory2
SampleFile1.txt
SampleFile2.txt
SapmleFile3.txt

ListFiles() 方法

此方法返回一个数组,其中包含当前 (File) 对象所代表的路径中所有文件 (和目录) 的对象 (抽象路径)。

由于此方法返回文件夹中每个文件/目录的对象。使用它,您可以访问文件/目录的属性,如大小、路径等。

示例

以下 Java 程序打印路径 D:\ExampleDirectory 中所有文件的名称、路径和大小。

import java.io.File;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      //List of all files and directories
      File filesList[] = directoryPath.listFiles();
      System.out.println("指定目录中的文件和目录列表:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

输出

指定目录中的文件和目录列表:
File name: SampleDirectory1
File path: D:\ExampleDirectory\SampleDirectory1
Size :262538260480

File name: SampleDirectory2
File path: D:\ExampleDirectory\SampleDirectory2
Size :262538260480

File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480

List(FilenameFilter filter) 方法

如其签名所示,此方法接受 FilenameFilter 对象并返回一个字符串数组,其中包含当前 (File) 对象所代表的路径中的所有文件和目录的名称。但返回的数组包含根据指定过滤器过滤的文件名。

使用此方法,您可以获取特定文件夹中文件和目录的过滤名称。

示例

以下 Java 程序打印路径 D:\ExampleDirectory 中的文本文件的名称。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FilenameFilter textFilefilter = new FilenameFilter(){
         public boolean accept(File dir, String name) {
            String lowercaseName = name.toLowerCase();
            if (lowercaseName.endsWith(".txt")) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      String filesList[] = directoryPath.list(textFilefilter);
      System.out.println("指定目录中的文本文件列表:");
      for(String fileName : filesList) {
         System.out.println(fileName);
      }
   }
}

输出

指定目录中的文本文件列表 −

SampleFile1.txt
SampleFile2.txt
SapmleFile3.txt

ListFiles(FilenameFilter filter) 方法

此方法接受 FilenameFilter 对象并返回一个 File 数组,其中包含当前 File 对象所代表的路径中的所有文件和目录的对象。但返回的数组包含根据其名称进行过滤的文件(对象)

使用此方法,您可以根据名称获取特定文件夹中文件和目录的过滤文件对象。

示例

以下 Java 程序打印路径 D:\ExampleDirectory 中所有文本文件的名称、路径和大小。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FilenameFilter textFilefilter = new FilenameFilter(){
         public boolean accept(File dir, String name) {
            String lowercaseName = name.toLowerCase();
            if (lowercaseName.endsWith(".txt")) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      File filesList[] = directoryPath.listFiles(textFilefilter);
      System.out.println("指定目录中的文本文件列表:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

输出

指定目录中的文本文件列表:
File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480

ListFiles(FileFilter filter) 方法

此方法接受 FileFilter 对象并返回一个 File 数组,其中包含当前 File 对象所代表的路径中的所有文件和目录的 (File) 对象。但返回的数组包含根据文件属性过滤的文件(对象)。

使用此方法,您可以根据大小、路径、类型(文件或目录)等获取特定文件夹中文件和目录的过滤文件对象……

示例

以下 Java 程序打印路径 D:\ExampleDirectory 中所有文件(不是文件夹)的名称、路径和大小。

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FileFilter textFilefilter = new FileFilter(){
         public boolean accept(File file) {
            boolean isFile = file.isFile();
            if (isFile) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      File filesList[] = directoryPath.listFiles(textFilefilter);
      System.out.println("指定目录中的文本文件列表:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

输出

指定目录中的文本文件列表:
File name: cassandra_logo.jpg
File path: D:\ExampleDirectory\cassandra_logo.jpg
Size :262538260480

File name: cat.jpg
File path: D:\ExampleDirectory\cat.jpg
Size :262538260480

File name: coffeescript_logo.jpg
File path: D:\ExampleDirectory\coffeescript_logo.jpg
Size :262538260480

File name: javafx_logo.jpg
File path: D:\ExampleDirectory\javafx_logo.jpg
Size :262538260480

File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480


相关文章