public static boolean checkData(String str) {
File file = new File(str);
String[] list = file.list();
if (file.canRead()) {//是required
if (list.length == 0) {
return false;
}
}
for (String string : list) {
File file2 = new File(str + "/" + string);
if (file2.isDirectory()) {
if(!checkData(file2.getPath())){
return false;
}
}
}
return true;
}
import java.io.File;
import java.io.IOException;
public class TestFiles {
public static void main(String[] args) throws IOException {
File f = new File("E:\\donghui806");
//查看项目的路径
System.out.println(System.getProperty("user.dir"));
//如果没有的话就在指定位置创建一个
// f.createNewFile();
printFile(f,0);
bianLi("E:\\donghui806\\Java Version SDK.rar",0);
}
public static void bianLi(String x,int y){//x为文件名,y为目录等级
//File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实 例。
File file=new File(x);
//定义一个空字符串
StringBuffer buffer=new StringBuffer("");
//方法:exists():测试此抽象路径名表示的文件或目录是否存在。返回boolean
//方法:isDirectory():测试此抽象路径名表示的文件是否是一个目录。返回boolean
//判断该文件存在并且是目录【是目录才有下一级目录】
if (file.exists()&&file.isDirectory()) {
File[] files=file.listFiles();//将文件的子文件转换为集合的形式
for (int i = 0; i < y; i++) {
//给buffer字符串循环追加"-"(几个 - 表示第几级目录);例如:--DotNetCasClient.dll [2级目录]
buffer.append("-");
}
//遍历子文件
for (File file3 : files) {//定义file3接收遍历的文件
//方法:getName():返回由此抽象路径名表示的文件或目录的名称。
//方法:getPath():将此抽象路径名转换为一个路径名字符串。
//例如E:/z/z/123.txt;【getName()获取的是123.txt;getPath()获取的是E:/z/z/123.txt】
System.out.print(buffer+file3.getName());//【拼接"-"和文件名称】
System.out.print(" ["+y+"级目录]");
System.out.println("");//输出换行
if (file3.isDirectory()) {//判断子文件是否是目录,如果是,则执行递归
bianLi(file3.getPath(),y+1);//调用自己,参数为子文件,目录等级加一;
}
}
System.out.println("");//输出换行
}
}
/**
* 打印文件信息
* @param file 文件名称
* @param level 层次数(实际就是第几次递归调用)
**/
static void printFile(File file, int level){
//1、输出层次数
for(int i = 0;i < level;i++){
System.out.print("-");
}
//2、输出文件名
System.out.println(file.getName());
//3、如果file是目录,则获取子文件列表,并对每个子文件进行相同的操作
if(file.isDirectory()){
File[] files = file.listFiles();
for(File file1:files){
//4、递归调用方法,记得要+1
printFile(file1,level+1);
}
}
}
}