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

本文介绍了如何使用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);
			}
		}
	}
	
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值