File类01.

File类的概述和构造方法

概述:

java.io.File 类是⽂件和⽬录路径名的抽象表示,主要⽤ 于⽂件和⽬录的创建、查找和删除等操作。

构造方法:

  • public File(String pathname) :通过将给定的 路径 名字符串 转换为抽象路径名来创建新的 File 实例
  • public File(String parent, String child) :从 路径名字符串和⼦路径名字符串 创建新的 File 实例。
  • public File(File parent, String child) :从 ⽗抽 象路径名和⼦路径名字符串 创建新的 File 实例。
//File类的概述:主要用于 文件和目录的创建,查找和删除等操作
public class Test01 {
    public static void main(String[] args) {
        //通过将给定的路径名字符串转换为抽象路径名来创建新的File
        File file1 = new File("E:\\图片\\新建文件夹\\1.jpg");
        System.out.println(file1);
        //从父路径名字字符串和子路径名字符串创建新的File实例
        File file2 = new File("E:\\图片","新建文件夹\\1.jpg");
        System.out.println(file2);
        //从父抽象路径名和子路径名字符串创建的File实例
        File file3 = new File("\\图片\\新建文件夹");
        File file4 = new File(file3,"1.jpg");
        System.out.println(file4);
        System.out.println("File对象代表硬盘中实际存在的一个文件或者目录");
        System.out.println("无论该路径下是否存在文件或者目录,都不影响File对象的创建");
        
    }
}

 File类常用方法

  • public String getAbsolutePath() :返回此 File 的绝对路径名字符串。
  • public String getName() :返回由此 File 表示的⽂件或⽬录的名称。  
  • public long length() :返回由此 File 表示的⽂件的⻓度。 不能获取⽬录的⻓度。
  • public String getPath() :将此 File 转换为路径名字符串。

代码:

public class Test02 {
    public static void main(String[] args) {
// getAbsolutePath() 返回绝对路径
//  getPath()  将File转换为路径名字符串
// getName()  获取文件名或文件夹名
// length() 获取文件大小,不能获取文件夹的大小
        //绝对路径
        File file1 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\1.png");
        System.out.println("File1表示的文件的绝对路径"+file1.getAbsolutePath());
        System.out.println("File1表示的文件的文件名:"+file1.getName());
        System.out.println("File1表示的文件的构造路径"+file1.getPath());
        System.out.println("File1表示的文件的字节大小"+file1.length());
        System.out.println("=======================================");
        //相对路径
        File file2 = new File("2.png");
        System.out.println("File2表示的文件的绝对路径"+file2.getAbsolutePath());
        System.out.println("Fele2表示的文件的构造路径"+file2.getPath());
        System.out.println("File2表示的文件的文件名:"+file2.getName());
        System.out.println("File2表示的文件的字节大小"+file2.length());
        System.out.println("=======================================");

        File file3 = new File("25120\\IdeaProjects\\java\\src\\zifuliu");
        System.out.println("File3表示的文件的绝对路径"+file3.getAbsolutePath());
        System.out.println("Fele3表示的文件的构造路径"+file3.getPath());
        System.out.println("File3表示的文件的文件名:"+file3.getName());
        System.out.println("File3表示的文件的字节大小"+file3.length());




    }
}

判断功能的方法

  • public boolean exists() :此 File 表示的⽂件或⽬录是否实际存在。
  • public boolean isDirectory() :此 File 表示的是否为⽬录。
  • public boolean isFile() :此 File 表示的是否为⽂件。
public class Test03 {
    public static void main(String[] args) {
//        exists() 判断文件及文件夹是否存在
//        isDirectory() 判断是否为文件夹
//        isFile() 判断是否为文件
        //如果使用相对路劲的话就会找不到文件或者文件夹,所以必须使用绝对路径
        File file1 =new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\1.png");
        System.out.println(file1.exists());//如果存在就返回true
        System.out.println(file1.isFile());
        File file2 =new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu");
        System.out.println(file2.isDirectory());//如果存在就返回true
        System.out.println("---------------------------------------------");
}

}

创建删除功能的方法

  • public boolean createNewFile() :当且仅当具有该 名称的⽂件尚不存在时,创建⼀个新的空⽂件。
  • public boolean delete() :删除由此 File 表示的⽂件或⽬录。
  • public boolean mkdir() :创建由此 File 表示的⽬录。
  • public boolean mkdirs() :创建由此 File 表示的⽬录,包括任何必需但不存在的⽗⽬录。
public class Test03 {
    public static void main(String[] args) {
 //创建删除功能方法
//        createNewFile() 创建文件
//        mkdir() 创建文件夹,当前文件夹 d:\dir\dir\a
//        mkdirs() 创建文件夹,没有就创建 d:\dir\dir\a
//        delete() 删除文件及文件夹
        File file3 = new File("2.txt");
        try {
            file3.createNewFile();//创建文件
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(file3.exists());
        //创建文件夹
        File file4 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\aa");
        file4.mkdir();
        System.out.println(file4.exists());
        //判断是否有文件夹没有就创建
        File file5 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\aa\\bb");
        file5.mkdirs();
        //删除文件及文件夹
        File file6 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\aa\\bb");
        file6.delete();
        File file7 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu\\2.txt  ");
        file7.delete();

}

}

File类遍历目录方法

  • public String[] list() :返回⼀个 String 数组,存储的是File ⽬录中所有的⼦⽂件或⼦⽬录的名称。
  • public File[] listFiles() :返回⼀个 File 数组,存储的是File ⽬录中所有的⼦⽂件或⼦⽬录的路径的 File 对象
public class Test03 {
    public static void main(String[] args) {

        //File类遍历目录方法
        //String [] list() 取文件及文件夹名
        //File[] listFiles() 取文件及文件夹对象
         File file8 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu");
         String[] str =file8.list();
         for (String s:str){
             System.out.println(s);
         }
         File[] file9 =file8.listFiles();
         for (File f:file9){
             System.out.println(f.getAbsolutePath());//获取的是文件和文件夹的绝对路径
         }


    }
}

递归

递归的概念

  • ⽣活中的递归 : 放⽺ -- 赚钱 -- 盖房⼦ -- 娶媳妇 -- ⽣娃 -- 放⽺ -- 赚钱-- 盖房⼦ -- 娶媳妇 -- ⽣娃 -- 放⽺ ...
  • 程序中的递归 : 指在当前⽅法内调⽤⾃⼰的这种现象。
  • 递归的注意事项:
  • 递归要有出⼝ ( 结束⽅法 ), 否则会报栈内存溢出错误StackOverflowError
  • 递归的出⼝不能太晚了
public class Test04 {
    static int i =0;
    public static void main(String[] args) {
        System.out.println("递归");
//        自己调用自己程序方法调用自己
//        递归要有停止的条件,没有就会报错StackOverflowError
//        递归出口不能太晚。
        method();
    }
    static void method(){
        if (i==5) {
            return;
        }
        i++;
        System.out.println("执行这个方法了"+i);
        method();
    }
}

递归累和

num的累加和 = num + (num-1)的累和,所以可以把累加和的操作定义成⼀个⽅法,递归调⽤。

public class Test05 {
    public static void main(String[] args) {
        int sum = mehod(5);
        System.out.println(sum);
        int j = mehod1(5);
        System.out.println(j);

    }
    static int mehod(int n){
        if (n ==1) {
            return 1;
        }
        return n+mehod(n-1);
    }
    static int mehod1(int n) {
        if (n == 1){
            return 1;
        }
        return n*mehod(n-1);
    }

}


文件搜索

  1.  目录搜素,无法判断多少级目录,所以使用递归,遍历所有目录
  2. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件
public class Test06 {
    //文件搜索
    public static void main(String[] args) {
      File file1 = new File("C:\\Users\\25120\\IdeaProjects\\java\\src\\zifuliu");
       findFild(file1);
    }
    public static void findFild(File file){
        File[] file2 = file.listFiles();//取出当前文件夹中的所有文件及文件夹的对象
        if (file2 != null) {
            for (File f:file2){
                //判断是不是文件如果是的话就判断他的后缀是不是png的
                if (f.isFile()&&f.getName().endsWith(".png")){
                    System.out.println(f.getAbsolutePath());
                }
                //如果是文件夹,就继续搜索
                if (f.isDirectory()){
                    findFild(f);
                }
            }
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值