今天有个朋友向我问了个问题,说是想用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());
		}
	}