如何使用Java筛选文件夹中的文件或子目录列表?

我们可以使用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教程中,我们学习了如何列出给定文件夹中的所有文件和子目录。

猜你喜欢

转载自blog.csdn.net/allway2/article/details/115349707
今日推荐