要递归首先须要有方法。递归,即方法本身调用本身。通常在程序中不多使用,但在这个实现中,咱们没法知道文件夹的深度,更没法根据深度来实现循环的嵌套。java
递归两个重要条件:数组
例如咱们要实现求1*2*3*4*5,咱们能够把5和1*2*3*4的结果相乘,而如何获取1*2*3*4的结果呢,天然就是4与1*2*3*4的结果相乘了。而在这一过程当中,咱们始终是作同一件事:将n与n-1的阶乘进行相乘。固然不可能无止境的乘下去,因此咱们须要一个终止条件:n == 1。在这两个条件下,咱们即可以实现递归求得n的阶乘了。ide
用代码实现以下:测试
1 public static int jieCheng(int n) { 2 if (n==1) { //终止条件 3 return 1; 4 } else { 5 return n * jieCheng(n-1); //n * (n-1)! 6 } 7 }
Java文件类以抽象的方式表明文件名和目录路径名。该类主要用于文件和目录的建立、文件的查找和文件的删除等。spa
File(String pathname) 经过将给定路径名字符串转换为抽象路径名来建立一个新 File
实例。
isDirectory() 测试此抽象路径名表示的文件是不是一个目录。
listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件(获取子目录文件)。
delete() 删除此抽象路径名表示的文件或目录,若是文件夹中有文件存在,则该文件夹不能被删除。
要删除一个目录下的全部文件和文件夹,咱们能够分为这么几步:3d
以下图所示,把圈表明文件,方块表明文件夹,则获得以下的执行顺序:code
用代码实现就是如下的效果:对象
1 public static void delDir(File file) { 2 if (file.isDirectory()) { 3 File zFiles[] = file.listFiles(); 4 for (File file2 : zFiles) { 5 delDir(file2); 6 } 7 file.delete(); 8 } else { 9 file.delete(); 10 } 11 }