列目录

Demo 1:

package vamdt.io;

import java.io.*;;

public class TestFile {
public static void main(String[] args) {
list("E:/BOOK");
}

/**
*
* @param path 将要罗列出结构的路径
* @param level 记录目录层次
*/

public static void list(String path) {
File file = new File(path);
System.out.println(file.getName());
list(file, 1);
}



private static void list(File file, int level) {

//判断目录是否存在
if (!file.exists())
System.out.println("目录不存在");

String pre = "";
for (int i=0; i<level; i++)
pre += " ";
// System.out.println("pre:" + pre + "Over");

File[] childs = file.listFiles();
for (int i=0; i<childs.length; i++) {
System.out.println(pre + childs[i].getName());
if (childs[i].isDirectory())
list(childs[i], level+1);
}

}

}



Demo 2:

package vamdt.io;

import java.io.File;
import java.util.LinkedList;

public class ListAllFiles {
private static int level;

public static void listAll(File file) {
//若传入的是文件或者目录内无文件则返回
if (file.isFile() || 0 == file.listFiles().length) {
return;
}

File[] files = file.listFiles();
files = sort(files);
for (File f : files) {
StringBuilder sb = new StringBuilder("");
if (f.isFile()) {
sb.append(getTAB(level));
sb.append(f.getName());
} else {
sb.append(getTAB(level));
sb.append(f.getName());
sb.append("\\\\");
}

System.out.println(sb);

//若是目录,则需进行递归处理,低前先把目录层次加一
//递归完成之后,需要设置把目录曾自减一
if(f.isDirectory()) {
level++;
listAll(f);
level--;
}
}
}

//设定tab的多少,即目录层次
private static String getTAB(int level) {
String tab = "";
for (int i=0; i<level; i++)
tab += "\t";
return tab;
}

//按照目录在上,名字在下的方式进行排序
private static File[] sort(File[] file) {
LinkedList<File> list = new LinkedList<File>();
for (File f : file) {
//把目录加在开头,文件加在结尾
if(f.isDirectory())
list.addFirst(f);
else
list.addLast(f);
}
//转换为数组返回
return list.toArray(new File[file.length]);
}


public static void main(String[] args) {
File f = new File("E:/BOOK");
listAll(f);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值