如何在Java中获取文件夹中的所有文件/文件夹列表
名为 文件 的类是系统中文件或目录(路径名)的表示。这个类提供了各种方法来对文件/目录执行各种操作。
要获得目录中所有现有文件的列表,此类提供了files类提供的两种不同变体: list() (返回名称)和 ListFiles() (返回文件对象)。
List()方法
此方法返回一个包含当前(文件)对象表示的路径中所有文件和目录的名称的字符串数组。
使用此方法,您可以打印文件和目录的名称。
示例
以下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("List of files and directories in the specified directory:");
for(int i=0; i<contents.length; i++) {
System.out.println(contents[i]);
}
}
}
输出
List of files and directories in the specified directory:
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("List of files and directories in the specified directory:");
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(" ");
}
}
}
输出
List of files and directories in the specified directory:
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
The 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("List of the text files in the specified directory:");
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("List of the text files in the specified directory:");
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(" ");
}
}
}
输出
List of the text files in the specified directory:
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
The 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("List of the text files in the specified directory:");
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(" ");
}
}
}
输出结果
List of the text files in the specified directory:
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