黑马程序员23-1: File深度遍历目录,取出目录/文件,删除目录/文件,递归

[align=center]------- [url=http://edu.csdn.net/heima]android培训 [/url]、[url=http://edu.csdn.net/heima]java培训[/url]、期待与您交流!------- [/align]



package cn.itcast.io.p1.file.test;

import java.io.File;

/*
* 需求:对指定目录进行所有内容的列出(包含子目录中的内容)
* 也可以理解为 深度遍历。
*
*
*/

public class FileTest {

/**
* @param args
*/
public static void main(String[] args) {

File dir = new File("e:\\demodir");

listAll(dir,0);
}

public static void listAll(File dir,int level) {


System.out.println(getSpace(level)+dir.getName());
//获取指定目录下当前的所有文件夹或者文件对象
//
level++;
//取出当前所有的文件及文件夹,放到文件数组中,仅仅是当期那,不做深度遍历
File[] files = dir.listFiles();
// for(File file : files){
// System.out.println("*****files****:" + file);
// }

for(int x=0; x<files.length; x++){
//如果当前有目录存在,递归进行查询列表功能,按顺序对已有目录进行深度遍历
if(files[x].isDirectory()){
listAll(files[x],level);
//递归到底后,逐层跳出,使用上一层的数据,继续往下面的语句执行
}
else{
System.out.println(getSpace(level)+files[x].getName());
}

}
}

private static String getSpace(int level) {

StringBuilder sb = new StringBuilder();

sb.append("|--");
for(int x=0; x<level; x++){
sb.insert(0,"| ");
}

return sb.toString();
}


}




package cn.itcast.io.p1.file.test;

import java.io.File;


/*
* 删除一个带内容的目录。
*
* 原理:必须从最里面往外删。
* 需要进行深度遍历。
*
*
*
*/
public class RemoveDirTest {

/**
* @param args
*/
public static void main(String[] args) {

File dir = new File("e:\\demodir");
// dir.delete();
removeDir(dir);
}

//遍历目录,删除文件,删除目录
public static void removeDir(File dir) {
//取出当前目录的文件及文件夹
File[] files = dir.listFiles();

for(File file : files){
//如果文件夹存在,则继续遍历文件夹
if(file.isDirectory()){
removeDir(file);
}else{
//不存在,则删除当前文件
//如果此路径名表示一个目录,则该目录必须为空才能删除。
System.out.println(file+":"+file.delete());
}
}
//删除当前目录
System.out.println(dir+":"+dir.delete());
}


}




package cn.itcast.io.p1.digui;

public class DiGuiDemo {

/**
* @param args
*/
public static void main(String[] args) {


/*
* 递归:
* 函数自身直接或者间接的调用到了自身。
*
* 一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关。
* 这时可以用递归来解决问题。
*
*
* 注意:
* 1,递归一定明确条件。否则容易栈溢出。
* 2,注意一下递归的次数。
*
*/
// show();
// toBin(6);
int sum = getSum(9000);

System.out.println(sum);
}

public static int getSum(int num){

int x = 9;
if(num==1)
return 1;

return num+getSum(num-1);

}

public static void toBin(int num){
if(num>0){

toBin(num/2);
System.out.println(num%2);

}
}

/*
public static void show(){

method();

}
public static void method(){
show();
}
*/


}




[align=center]------- [url=http://edu.csdn.net/heima]android培训 [/url]、[url=http://edu.csdn.net/heima]java培训[/url]、期待与您交流!------- [/align]

[align=center]详细请查看:[url=http://edu.csdn.net/heima]http://edu.csdn.net/heima [/url]------- [/align]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值