一、File类
1.概念:将操作系统中文件(目录)路径,封装成File类对象
2.构造方法
//File(string pathName)
File file=new File("e:\\a.txt");
System.out.println(file);
//File(string parent,string child)
File file2=new File("e:","a.txt");
System.out.println(file2);
//File(File,string child)
File file3=new File("e:");
File file4=new File(file3,"a.txt");
System.out.println(file4);
3.创建文件
File file=new File("e:\\a.txt");
boolean b=file.createNewFile();
System.out.println(b);
创建文件夹
File file=new File("e:\\abc\\b\\c\\d\\a.txt");
boolean b=file.mkdirs();
System.out.println(b);
4.返回文件或路径名
//.getName()返回文件或文件名
String str=file.getName();
System.out.println(str);
//.getPath()路径名为字符串
String str2=file.getPath();
System.out.println(str2);
5.遍历文件
file.fileLists()方法:遍历目录或文件路径
File file=new File("F:\\2.专业课\\嵌入式");
File[] fileArr=file.listFiles();
for (File file2 : fileArr) {
System.out.println(file2);
}
file.list()方法:遍历文件名
File file=new File("F:\\2.专业课\\嵌入式");
String[] strArr=file.list();
for (String string : strArr) {
System.out.println(string);
}
listRoots()方法:遍历系统中的根目录
File[] list=File.listRoots();
for (File file : list) {
System.out.println(file);
}
二、递归
递归:在当前方法内调用自己的这种现象,递归必须有返回值。
例子:计算5!,如果是1则返回;否则用i调用i*getQi(i-1)
public static int getQi(int i){
//如果为1则返回1
if(i==1)
return 1;
//否则递归调用
return i*getQi(i-1);
}
三、File遍历+递归
例子:遍历文件夹中的文件,使用递归遍历不同层级的文件,不同层级可以表示出来
private static void getPrint(File file,int level) {
//每次打印文件名:\t*(层级数-1)+文件名
System.out.println(getLevel(level)+file.getName());
//打印完本根文件,就Level++,层级加深
level++;
File[] files=file.listFiles();
for (File f : files) {
//若是文件,每次遍历需要加深一层
if(f.isFile()){
System.out.println(getLevel(level)+f.getName());
}else{
getPrint(f,level);
}
}
}
判断空格的函数:
/*
* 判断空格数函数:不同层级之间需要有不同事务“\t”来区分,第一个层级是顶格的,第二个层级有一个\t,第三个有两个\t,依次类推
*/
public static String getLevel(int level){
//第一个层级是顶格的,所以返回空
if (level==1)
return "";
//定义常数\t
String sum="\t";
//需要累加返回的空格数
String Sum="";
for (int i = 1; i < level; i++) {
Sum=Sum+sum;
}
return Sum;
}
小结:
文件的遍历其实就是遍历文件路径,然后如果是文件夹则循环调用,如果是文件则直接打印。递归是一个比较难的点,需要沉下心来一点点理解,一旦理解后其他的就容易了。