/*
需求:
列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下的所有内容。
因为目录中还有目录,只要使用同一个列出功能的函数完成即可。
在列出过程中出现的还是目录的话,可以再次调用本功能。
也就是函数自身调用自身。
这种表现形式,或者编程手法,称为递归。
递归要注意:
1.限定条件
2.要注意递归的次数,尽量避免内存溢出。
*/
import java.io.*;
class FileDemo3
{
public static void main(String[] args)
{
File dir = new File("e:\\javademo\\day18");
showDir(dir);
toBin(6);
}
public static void showDir(File dir)
{
System.out.println(dir);
File[] file = dir.listFiles();
for(int x=0;x<file.length;x++)
{
if(file[x].isDirectory())
{
//System.out.println(file[x]);
showDir(file[x]);//递归调用
}
else
System.out.println(file[x]);
}
}
//递归
public static void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
}
}
}
/*
递归思想:
void showA()
{
void showB();
sop(A)
}
void showB()
{
void showC();
sop(B)
}
void showC()
{
sop(C)
}
CBA
*/
/*
E:\javademo\day20>java FileDemo3
e:\javademo\day18
e:\javademo\day18\CalendarDemo.java
e:\javademo\day18\CalendarDemo1.java
e:\javademo\day18\CalendarDemo2.java
e:\javademo\day18\DateDemo.java
e:\javademo\day18\day18_IO
e:\javademo\day18\day18_IO\CopyTest.java
e:\javademo\day18\day18_IO\FileReaderDemo.java
e:\javademo\day18\day18_IO\FileReaderDemo1.java
e:\javademo\day18\day18_IO\FileWriterDemo.java
e:\javademo\day18\day18_IO\FileWriterDemo1.java
e:\javademo\day18\day18_IO\FileWriterDemo2.java
e:\javademo\day18\day18_IO\文件拷贝过程.bmp
e:\javademo\day18\MathDemo.java
e:\javademo\day18\MathDemo1.java
e:\javademo\day18\MathDemo2.java
e:\javademo\day18\MathDemo3.java
e:\javademo\day18\MathTest.java
e:\javademo\day18\RuntimeDemo.java
e:\javademo\day18\SystemDemo.java
1
1
0
*/
09-09