`
收藏列表
标题 标签 来源
java深度遍历目录
package io;

import java.io.File;

/*
 * 需求:对指定的目录进行所有内容的列出(包含子目录中的内容),也可以理解为深度遍历.
 * 注意不要去遍历:C盘因为它里边有许多系统目录,没有权限访问,会产生空指针,
 * 也不要遍历其他系统根目录如d:\\或e:\\因为:它们之中如果有系统文件也会产生空指针.
 * 
 */
public class _18Filetest {
	public static void main(String[] args) {
		File dir=new File("D:\\Music");
		listAll(dir,0);
	}
	/* 深度遍历文件夹:按如下的格式输出.
	 * 
	 * |--Music
	 * |  |--KwDownload.txt
	 * |  |--L-聆听
	 * |  |  |--100413
	 * |  |  |  |--002-I believe I can fly.lrc
	 * |  |  |  |--002-I believe I can fly.mp3
	 * 
	 */
	private static void listAll(File dir,int level) {
		System.out.println(getSpace(level)+dir.getName());
		level++;
		
		//获取指定目录下当前的所有文件夹或者文件对象. 
		//listFiles()方法返回的是File对象,对象中封装了许多有用信息.而list只得到String类型的文件名.
		//listFiles()方法返回的时当前目录下的所有文件和目录对象,所以要想深度遍历必须使用递归调用.
		File[] files=dir.listFiles();
		
		//对于数组的遍历如果不想操作脚标就使用foreach.如果想就使用for.
		for(int i=0;i<files.length;i++){
			if(files[i].isDirectory()){
				listAll(files[i],level);
			}else{
				System.out.println(getSpace(level)+files[i].getName());
			}
		}
	}
	private static String getSpace(int level){
		StringBuilder sb=new StringBuilder();
		sb.append("|--");
		for(int i=0;i<level;i++){
			sb.insert(0, "|  ");//在字符串的最前面加入"|  "
		}
		return sb.toString();
	}

}
Global site tag (gtag.js) - Google Analytics