File类的创建:
在获得File类对象之后,可以通过CreateNewFile ()方法在本地创建一个文件,而如果要创建一个文件夹,我们使用mkdir ()方法,如果要创建多级文件夹,则可以使用mkdirs ()方法。
创建对象的方法
1、直接创建
2、通过父路径创建
3、通过父路径的实例化对象实现
eg:
package io;
import java.io.File;
public class Learn {
public static void main(String[] args) {
File file =new File("D:\\aa\\bb");
File file2=new File("D:\\aa","bb");
File file3=new File(new File("D:\\aa"),"bb");
if(file.exists()) {
System.out.println("确实存在");
}
System.out.println(file2.getPath());
System.out.println(file3.getPath());
}
}
getPath() 返回File的路径; exist() 判断file 路径是否存在:返回true false
File类的删除:
文件的删除则更简单,只要定义对应的File对象,调用其delete ()方法即可。
案例:
package com.文件类;
import java.io.File;
import java.io.IOException;
public class FileTest02 {
public static void main(String[] args) throws IOException {
//File类对象的创建 文件---文件夹
//创建文件
File f1= new File("d:/aa/bb/b.txt");
//1.如果文件的前置目录不存在,则异常2.文件前置的目录存在,文件不存在则创建一个文件,文件存在则不做任何操作
f1.createNewFile();
//创建文件夹
File f2 = new File("D:/xx/yy/zz");
//2.该方法要求所有前置目录已存在,才会创建对应的文件夹 zz
// f2.mkdir();
//3.该方法可以自动补全所有文件目录,并创建文件夹
f2.mkdirs();
//File类对象的删除
File f3= new File("D:/xx/yy/zz");
File f4 = new File("D:/xx/yy");
//删除时文件夹必须为空
f3.delete();//删除的zz
//
f4.delete();
}
}
File目录的遍历
list() : 输出String数组 ,其中对应目录下的文件名
listFiles() :返回 File[] 其中对应目录下成文件打包成File对象
package com.文件类;
import java.io.File;
import java.util.Arrays;
public class FileTest03 {
public static void main(String[] args) {
File f1 = new File("D:/aa");
String[] list= f1.list();//获取文件夹中所有的子目录或文件的名字
System.out.println(Arrays.toString(list));
File []files= f1.listFiles();//获取文件夹中所有的 子目录 或 文件的file对象数组
System.out.println(Arrays.toString(files));
//目录的遍历 知道层级用for循环 有几个层级 就用几个for循环
for (int i=0;i<files.length;i++){
File temp = files[i];
if (temp.isDirectory()){//判断是否是文件夹
File [] files1 = temp.listFiles();
System.out.println(Arrays.toString(files1));
}
}
}
}
递归遍历:
案例:
package com.文件类;
import static com.lib.test01.Student.fun;
public class DiGuiTest {
private static int count=1;
public static void main(String[] args) {
//递归--复杂算法
System.out.println("----1---");
System.out.println("----2---");
fun();
System.out.println("----3---");
System.out.println("----4---");
}
//方法中调用自己的方法 叫递归 递(有条件的递) 归(某个时刻不在调用自己,进行方法返回)
public static void fun(){
System.out.println("----fun1---");
System.out.println("----fun2---");
count++;
if (count<4){
fun();
}
System.out.println("----fun3---");
System.out.println("----fun4---");
}
}
eg:
package com.文件类;
public class DiGguiTest01 {
public static void main(String[] args) {
// for (int i=1;i<=10;i++){
// System.out.println(i);
// }
// print(10);
int he = sum (2);
System.out.println(he);
}
/*
*递归实现打印输出1-n
*
*/
public static void print(int n) {
System.out.println(n);//倒叙 10-1
if (n > 0) {
print(n-1);//1--(n-1)
}
// n--;
// if (n>0){
// print(n);//1--(n-1)
// }
// System.out.println(n);//0-9 正序
}
/*
*完成1-n的累加求和
*/
public static int sum(int n){
int sum=0;
sum= sum+n;//累加n
if (n>0){
sum= sum+sum(n-1);//累加1--(n-1)
}
return sum;
}
}