Java遍历指定目录下的所有文件

初级Java面试经常会遇到写一个递归遍历指定文件夹下的所有文件,今天闲来无事,看了些例子,自己整理一下。希望可以帮助到初学者,顺便也算自己的一个笔记,方便以后查阅。

package files;

import java.io.File;

public class RecursionFiledir {
	
	public static void main(String[] args) throws Exception {
		File file = new File("D:"+File.separator);   // 指定操作目录
		showFileList(file);         // 列出给定目录中的全部内容
		showAllFilesSimple(file);   // 递归显示指定目录的全部内容(简单版)
		showAllFilesFull(file);     // 递归显示指定目录的全部内容(完整版)
		printFile(file, 0);         // 遍历指定文件夹下的所有文件
	}
	
	//列出指定文件夹下的全部内容
	public static void showFileList(File file) {
		File files[] = file.listFiles();   // 列出给定目录中的全部内容(带路径)
		for (int i=0; i<files.length; i++) {
			System.out.println(files[i]);
		}
	}
	 
	 /**
	  * 递归显示指定目录的全部内容(简单版)
	  * @param file
	  * @throws Exception
	  */
	public static void showAllFilesSimple(File file) throws Exception {
		if (file != null) {     // 判断对象是否为空
			File[] files = file.listFiles();
			for (int i=0; i<files.length; i++) {
				System.out.println(files[i].getAbsolutePath());
				if (files[i].isDirectory()) {
					showAllFilesSimple(files[i]);
				}
			}
		}
	}
	
	/**
	 * 递归显示指定目录的全部内容(完整版)
	 * @param file
	 * @throws Exception
	 */
	public static void showAllFilesFull(File file) throws Exception {
		if (file != null) {    // 判断对象是否为空
			if (file.isDirectory()) {    // 判断如果是目录
				File files[] = file.listFiles();  // 列出全部的文件
				if (files != null) {    // 判断此目录能否列出
					for(int i=0; i<files.length; i++) {
						showAllFilesFull(files[i]);  // 此处路径有可能是目录,所以继续执行该方法
					}
				} 
			} else {
				System.out.println(file);    // 显示出路径
			}
		}
	}
	
	/**
	 * 遍历指定文件夹下的所有文件
	 * @param file  传入的目录
	 * @param level 等级 
	 */
	public static void printFile(File file, int level) {
		for (int i = 0; i<level; i++) {
			System.out.print("-");
		}
		System.out.println(file.getName());
		
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File temp : files) {
				printFile(temp, level+1);
			}
		}
	}
	
	
}


猜你喜欢

转载自blog.csdn.net/u014682894/article/details/38765851