您的位置:首页 > 其它

使用递归方式遍历指定磁盘路径下的文件及文件夹

2012-01-30 17:32 716 查看
package com.javase.io2;

import java.io.File;

import java.util.ArrayList;

public class FileTest {

//确定当前目录是多少层

private static int time;

//遍历磁盘某一路径中的文件

public static void recursionFile(File file){

//递归的出口,如果传进来的是一个文件,或者传进来的是一个空目录,则停止

//如果传进来的是一个文件夹,文件夹下面有文件下或文件,则显示出文件夹的名称和文件夹下的文件名称

if(file.isFile()||0==file.listFiles().length){

return;

}else{

File[] files = file.listFiles();

files = sort(files);

for(File f : files){

StringBuffer output = new StringBuffer();

if(f.isFile()){

//如果是文件,首先显示一个缩进,但是缩进多少,需要获取一个表示进第几层目录的数字,

//用这个数字来决定缩进量

output.append(getTabs(time));

output.append(f.getName());

}else{

output.append(getTabs(time));

output.append(f.getName()).append("文件夹");

}

System.out.println(output.toString());

//如果当前对象是文件夹,则递归调用显示文件的方法,注意先增加缩进量,然后遍历,遍历一个,需要将平级

//的

if(f.isDirectory()){

time++;

recursionFile(f);

time--;

}

}

}

}

//对文件夹下的文件夹与文件进行排序,使得文件夹放在文件的前面,并将排序结果返回

public static File[] sort(File[] files){

ArrayList<File> sorted =new ArrayList<File>();

for(File f : files){

if(f.isDirectory()){

sorted.add(f);

}

}

for(File f : files){

if(f.isFile()){

sorted.add(f);

}

}

return sorted.toArray(new File[files.length]);

}

public static String getTabs(int time){

StringBuffer buffer = new StringBuffer();

for(int i = 0 ; i < time ; i++){

buffer.append("\t");

}

return buffer.toString();

}

@SuppressWarnings("static-access")

public static void main(String[] args) {

new FileTest().recursionFile(new File("D:\\tools"));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐