我们可以使用Java获取给定文件夹中文件和子目录的列表。我们还可以根据扩展名或特定条件过滤列表。
在本Java教程中,我们将学习如何执行以下任务。
如何使用Java提取文件夹中的文件和目录列表?
按着这些次序。
步骤1:指定文件夹。在此示例中,“ sample”是放在项目根目录下的文件夹名称。
File folder = new File( "sample" );
|
步骤2:获取文件夹中所有项目的列表。
File[] listOfFiles = folder.listFiles();
|
步骤3:检查资料夹中的项目是否是档案。
listOfFiles[i].isFile()
|
步骤4:检查资料夹中的项目是否为目录。
listOfFiles[i].isDirectory()
|
下面列出了列出文件夹中文件和目录的完整程序。
ListOfFilesExample.java
package MD5HashingExample;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Program that gives list of files or directories in a folder using Java
*/
public class ListOfFilesExample {
public static void main(String[] args) {
List files = new ArrayList<>();
List directories = new ArrayList<>();
File folder = new File("d:\\");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
files.add(listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
directories.add(listOfFiles[i].getName());
}
}
System.out.println("List of files :\n---------------");
files.forEach(x -> System.out.println(x));
System.out.println("\nList of directories :\n---------------------");
directories.forEach(x -> System.out.println(x));
}
}
输出
扫描二维码关注公众号,回复:
13125770 查看本文章
List of files :
---------------
html_file_1.html
text_file_1.txt
text_file_3.txt
text_file_2.txt
List of directories :
---------------------
directory_1
directory_2
|
如何从文件夹中获取特定扩展名的文件列表?
按着这些次序。
步骤1:指定文件夹。
File folder = new File( "sample" );
|
步骤2:获取文件夹中所有项目的列表。
File[] listOfFiles = folder.listFiles();
|
步骤3:检查资料夹中的项目是否是档案。
listOfFiles[i].isFile()
|
步骤4:检查文件是否属于指定的文件类型。
使用String.endsWith(suffix)检查文件名的扩展名
listOfFiles[i].getName().endsWith(fileExtension)
|
下面显示了获取属于指定扩展名类型的文件列表的完整程序。
ListOfFilesExample.java
package MD5HashingExample;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ListOfFilesExample2 {
public static void main(String[] args) {
List files = new ArrayList<>();
List directories = new ArrayList<>();
String fileExtension = ".txt";
File folder = new File("d:\\");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
if (listOfFiles[i].getName().endsWith(fileExtension)) {
files.add(listOfFiles[i].getName());
}
}
}
System.out.println("List of .txt files :\n--------------------");
files.forEach(x -> System.out.println(x));
}
}
当程序运行时,输出到控制台将如下所示。
输出
List of .txt files :
--------------------
text_file_1.txt
text_file_3.txt
text_file_2.txt
|
如何从文件夹及其子目录获取具有特定扩展名的文件列表?
按着这些次序。
步骤1:指定文件夹。
File folder = new File( "D:" +File.separator+ "Arjun" +File.separator+ "sample" );
|
步骤2:获取文件夹中所有项目的列表。
File[] listOfFiles = folder.listFiles();
|
步骤3:检查资料夹中的项目是否是档案。
listOfFiles[i].isFile()
|
步骤4:检查文件是否属于指定的文件类型。
使用String.endsWith(suffix)检查文件名的扩展名
listOfFiles[i].getName().endsWith(fileExtension)
|
步骤5:检查资料夹中的项目是否为目录。
listOfFiles[i].isDirectory()
|
步骤6 :从所有子目录递归获取文件列表(记录为特定文件类型)。
完整的程序如下。
FileListExtractor.java
package MD5HashingExample;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileListExtractor {
List allTextFiles = new ArrayList();
String fileExtension = ".txt";
public static void main(String[] args) {
FileListExtractor folderCrawler = new FileListExtractor();
folderCrawler.crawlFold("d:\\");
System.out.println(
"All text files in the folder \"sample\" and its sub directories are :\n---------------------------------------------------------------");
folderCrawler.allTextFiles.forEach(x -> System.out.println(x));
}
public void crawlFold(String path) {
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
if (listOfFiles[i].getName().endsWith(fileExtension)) {
allTextFiles.add(listOfFiles[i].getName());
}
} else if (listOfFiles[i].isDirectory()) {
// if a directory is found, crawl the directory to get text files
crawlFold(path + File.separator + listOfFiles[i].getName());
}
}
}
}
运行程序时,输出到控制台的是
输出
All text files in the folder "sample" and its sub directories are :
---------------------------------------------------------------
text_file_2_1.txt
text_file_1_1.txt
text_file_2_1.txt
text_file_1_1.txt
text_file_2_2.txt
text_file_1_2.txt
text_file_1.txt
text_file_3.txt
text_file_2.txt
|
结论
在本Java教程中,我们学习了如何列出给定文件夹中的所有文件和子目录。