java代码遍历目录下的所有文件(查找对应目录下的所有文件)

时间:2023-01-31 00:37:07

今天有个朋友向我问了个问题,说是想用java代码看一个路径下的文件怎么看,于是随手写了下面一点代码,供不懂或不太了解的小牛牛们学习学习哈。


import java.io.*;
class Test 
{
	public static void main(String[] args)throws IOException 
	{
		test("D:\\");
	}
	public static void test(String path){    //path为目录
		File file = new File(path);   
		File[] files = file.listFiles();     //遍历该目录所有文件和文件夹对象
		for(int i = 0; i<files.length;i++){		
			
			if(files[i].isDirectory()){			
				test(files[i].toString());       //递归操作,逐一遍历各文件夹内的文件
			}else {
				if(!files[i].isDirectory())
					System.out.println(files[i]);   //只打印文件,不打印文件夹
			}
		}

}

再来补充一下,好几种方法可以查找当前目录的文件。这个没用递归所以只能找当前目录的文件,要找所有文件的自己在下面的方法上用下递归吧,方法其实很多很多,我就列几种吧。

//实现FilenameFilter接口 public static void test3(){ File file = new File("D:\\"); NameFilter filter = new NameFilter(); String[] str = file.list(filter); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } //匿名内部类 public static void test4(){ File file = new File("D:\\"); String[] str = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub if(name.endsWith(".java")||name.endsWith(".txt")) return true; return false; } }); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } //FileFilter public static void test5(){ File file = new File("D:\\"); File[] listFiles = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { // TODO Auto-generated method stub if (pathname.isFile()&&pathname.getName().endsWith("java")) { return true; } return false; } }); for (int i = 0; i < listFiles.length; i++) { System.out.println(listFiles[i].getName()); } }