File API
API | 说明 |
---|---|
mkdir(必须存在上级目录) mkdirs(上级目录不存在就创建出来) | 创建目录,如果父目录链不存在则一同创建 |
list(这里只是下一级的名称,不是子孙级。要获取到子孙级要使用递归---方法自己调自己就是递归(递归级---递归头)) | 下级名称 |
listFiles(拿到下一级的文件对象) | 下级File |
listRoots() | 根路径 |
测试这些API:
package ioStudy;
import java.io.File;
/**
* 创建目录
* 1.mkdir--->确保上级目录存在,如果不存在则创建失败
* 2.mkdirs--->上级目录可以不存在,不存在的话则一同创建
* 列出下一级
* 1.list():找出下一级名称
* 2.listFile():列出下级File对象--->返回的是一个容器(字符串数组)
* 3.listRoots():windows找出盘符
* @author Lucifer
*/
public class TestDirDemo1 {
public static void main(String[] args) {
//定义对象路径
File dir = new File("D:/workspace/practice/main/java/ioStudy/dir/test");
//创建目录--->测试mkdir方法
boolean flag = dir.mkdir();
System.out.println(flag);
//测试目录--->测试mkdirs方法
flag = dir.mkdirs();
System.out.println(flag);
// flag = dir.delete();
// System.out.println(flag);
//测试列出下一级
//列出之前首先要新建对象,保证对象是目录而不是文件
File dir2 = new File("D:/workspace/practice/main/java/collection");
String[] subName = dir2.list();
for (String s : subName){
//输出字符
System.out.print(s + "\t");
}
//获取下一级对象--->listFiles
File[] subFile = dir2.listFiles();
//增强for循环打印出
for (File f : subFile){
System.out.println(f.getAbsolutePath() + "\t");
}
//列出所有的盘符---listRoot
File[] roots = dir2.listRoots();
//打印出
for (File r : roots){
System.out.println(r.getAbsolutePath());
}
}
}
回顾递归方法的使用:
-
递归是自己调自己,要有两个关键部分
-
递归头
-
递归体
-
package ioStudy;
/**
* 简单回顾递归算法--->测试递归算法
* 递归:方法自己调用自己--->数据结构的压栈(占用内存很高)
* 包含部分:
* 1.递归头--->合适结束递归(循环结束条件)--->文件操作的时候递归很好用,因为结束条件好找
* 2.递归体--->重复调用
* @author Lucifer
*/
public class TestDirDemo2 {
public static void main(String[] args) {
//首先要明白递归式方法自己调用自己,所以要先写一个方法
printTen(1);
}
/*写一个类方法*/
public static void printTen(int n){
/*先写递归头--->结束条件*/
//打印1~10,到10结束那么就是写判断然后返回值结束方法
//一定要结束方法,否则会内存溢出
if (n > 10){
//这是递归头
return;
}
/*方法要可以输出查看调用了几次*/
System.out.println(n);
/*让方法自增*/
printTen(n + 1); //递归体:每一次调用自己都+1
}
}