1.File
在java中File类不是用来描述文件的;
而是用来描述文件或者目录的路径的;不管路径指向的文件或者目录是否存在;
构造方法:
1.File(String pathname):根据指定的字符串路径,创建一个File 对象,这个对象表示的是这个字符串对应的路径;
2.File(String parent,String child):把完整的路径分成两部分;
3.File(File parent,String child):使用Parent表示路径与child拼接成一个完整的路径;
成员方法:
1.boolean createNewFile():创建一个i性的文件,如果创建成功返回true,否则返回false;
2.boolean delete():删除文件或目录;
3.boolean exists():判断文件或者目录是否存在;
4.String getName():得到文件或目录的名字;
5.String getParent():获得上一级目录的路径;
6. File getAbsoluteFile(): 获得file的绝对路径表示的File对象 ;
7. String getAbsolutePath() :获得绝对路径;
8. String getPath():得到File对象表示路径字符串;
9. boolean isAbsolute() :判断File对象表示的路径是否为绝对路径;
10.boolean isDirectory():判断File对象表示的路径是否为目录;
11.boolean isFile() :判断File对象表示的路径是否为文件;
12. long length():得到文件的长度,单位为字节;
13.String[] list() :得到当前文件夹下的所有文件或者文件夹对应的路径;
14. File[] listFiles() 得到当前文件夹下的所有文件或者文件夹的路径对应的File对象;
15. boolean mkdir() :创建目录;
2.递归
在方法里面自己调用自己;
public void method01(){
....
method01();
....
}
如果让递归无限的循环执行下去,会和出现栈溢出异常;java.lang.StackOverflowError;
在定义递归方法时,要具备两个条件:
1.在方法中自己调用自己;
2.给循环一个终止的条件;
1.在什么时候写出递归的方法:
把总的方法分解成子功能,而且子功能的计算逻辑 与 总的功能的计算逻辑类似;
2.在定义递归方法时,需要具备两个条件:
1.在方法中自己调用字节;
2.给递归一个终止的条件;
举例:
public class DiGuiDemo2 {
public static void main(String[] args) {
int sum = sum(5);
System.out.println(sum);
}
public static int sum(int n){
if(n==1){
return 1;
}
return sum(n-1)+n;
}
}
练习题:不死神兔
现在有一对兔子,小兔子到从出生的第三个月开始,每个月都要生出一对小兔子.加入说兔子都不死,到了第20个月,总共有多少对兔子?
示例代码:
public class DiGuiDemo3 {
public static void main(String[] args) {
int rabbites = getRabbites(20);
System.out.println(rabbites);
}
public static int getRabbites(int n){
// 2.终止的条件
if(n==1 || n==2){
return 1;
}
// 1.字节调用字节
return getRabbites(n-2)+getRabbites(n-1);
}
}
3.练习题
步骤:
1.创建一个File对象表示"E:\工作\传智播客\JavaEE\讲课视频\JavaEE就业班\Java基础\299期\day10-IO【File、递归】\资料"路径;
2.定义一个方法,用来打印指定目录下的文件的路径;
3.在方法中,得到当前目录下的所有File对象;
4.循环遍历file对象;
5.在循环中判断该file表示的是否为文件;
6.如果是文件,就打印绝对路径;
7.如果不是文件,就调用刚才定义的方法,遍历这个file对象表示的目录,前提条件是目录不能为空;
代码:
public class PrintPathDemo {
public static void main(String[] args) {
// 步骤:
// 1.创建一个File对象表示"E:\工作\传智播客\JavaEE\讲课视频\JavaEE就业班\Java基础\299期\day10-IO【File、递归】\资料"路径;
File dir = new File("E:\\工作\\传智播客\\JavaEE\\讲课视频\\JavaEE就业班\\Java基础\\299期\\day10-IO【File、递归】\\资料");
//调用方法
printPath(dir);
}
// 2.定义一个方法,用来打印指定目录下的文件的路径;
public static void printPath(File dir) {
System.out.println("-----------------"+dir.getAbsolutePath()+"------------");
// 3.在方法中,得到当前目录下的所有File对象;
File[] listFiles = dir.listFiles();
// 4.循环遍历file对象;
if(listFiles == null){
return;
}
for (File file : listFiles) {
// 5.在循环中判断该file表示的是否为文件;
if(file.isFile()){
// 6.如果是文件,就打印绝对路径;
System.out.println(file.getAbsolutePath());
}else{
// 7.如果不是文件,就调用刚才定义的方法,遍历这个file对象表示的目录,前提条件是目录不能为空;
printPath(file);
}
}
}
}