file类、递归
1. file类
java.io.file类文件和目录路径名的抽象表示形式。
java把电脑中的文件和文件夹(目录)封装成为了一个file类,我们可以使用file类的文件和文件夹进行操作。
file--文件 directory--文件夹/目录 path--路径
file类中的常用方法
File类获取功能的方法
- public String getAbsolutePath() :返回此File的绝对路径名字符串。
- public String getPath() :将此File转换为路径名字符串。
- public String getName() :返回由此File表示的文件或目录的名称。
- public long length() :返回由此File表示的文件的大小。
File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt");
String name1 = f1.getName();
System.out.println(name1);//a.txt
File f2 = new File("C:\\develop\\a\\2.jpg");
System.out.println(f2.length());//0
file类判断功能的方法
exists 用于判断构造方法中的路径是否存在。
isdirectory 是否为目录。
isFile() 是否为文件
File f1 = new File("E:\\test");
if(f1.exists()){
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
}
file类遍历目录功能
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
File file = new File("E:\\test");
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
2. 递归
递归:方法自己调用自己。
注意事项:有条件限定,保证递归能停止下来。而且递归次数不能太多。
使用前提:需要调用方法,方法的主体不变,每次传入的参数不同时,可以使用递归。
resource 看图
方法在栈内存中
3. 练习:使用递归计算1-n之间的和。
定义一个方法,使用递归计算1-n之间的和
1+2+3+...+n
n+(n-1)+(n-2)+...+1
已知:
最大值:n
最小值:1
使用递归必须明确:
1.递归的结束条件
获取到1的时候结束
2.递归的目的
获取下一个被加的数字(n-1)

非常重要 ,在递归中,一直要入栈到最后一级,然后再逐级往栈底弹栈。
public static int sum(int n){
//获取到1的时候结束
if(n==1){
return 1;
}
return n + sum(n-1);
}
4. 练习:使用递归计算阶乘
原理几乎和上一题一模一样,可以不练。
5. 练习:递归打印文件夹目录
要求:给出一个地址,要打印这个目录下的所有文件及文件夹。尤其是碰到文件夹的情况,需要进入文件夹,继续往下读。
public static void main(String[] args) {
File file = new File("E:\\网络下载\\Office Tool\\files\\clean");
getAllFile(file);
}
/* 定义一个方法,参数传递File类型的目录
方法中对目录进行遍历 */
public static void getAllFile(File dir){
System.out.println(dir);//打印被遍历的目录名称
File[] files = dir.listFiles();
for (File f : files) {
//对遍历得到的File对象f进行判断,判断是否是文件夹
if(f.isDirectory()){
getAllFile(f);
}else{
//f是一个文件,直接打印即可
System.out.println(f);
}
}
}

浙公网安备 33010602011771号