今天学了IO流,学习了file类的使用,然后老师布置了一个删除文件夹里的文件和文件夹的题目,当时思考很久,都不知道该怎么写,于是上网查找了资料,看了一下递归算法,总算懂得了递归算法的用法。下面我就与大家分享一下我的代码,首先先分享一个递归算法的小题目。
1.一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少?使用递归实现
package file;
public class File4 {
public static void main(String[] args) {
System.out.println(File4.print(8));
}
public static int print(int i){
if(i<=2){
return 1;
}
return print(i-1)+print(i-2);
}
}
2.删除文件夹里的文件和文件夹
package file;
import java.io.File;
public class DeleteDirectory {
private static void doDeleteEmptyDir(String dir) {
boolean success = (new File(dir)).delete();
if (success) {
System.out.println("成功删除目录" + dir);
} else {
System.out.println("无法删除空目录: " + dir);
}
}
private static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();//递归删除目录中的子目录下
for (int i=0; i<children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {//跳出递归的条件;
return false;
}
}
}
// 目录此时为空,可以删除
return dir.delete();
}
public static void main(String[] args) {
doDeleteEmptyDir("F:/lesson4");
String newDir2 = "F:/lesson4";
boolean success = deleteDir(new File(newDir2));
if (success) {
System.out.println("成功删除的目录: " + newDir2);
} else {
System.out.println("无法删除填充的目录: " + newDir2);
}
}
}
总结: 通过这两个例子 ,我学会了递归算法的使用,很开心,与大家分享一下。