File类介绍

File类概述和其构造方法

File类:
他是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是正真的文件,仅仅是一个路径名而已。它可以存在,也可以不存在。将来是要通过具体的操作把这个路径的内容转换为具体的存在。

package com.lxg.io.file;

import java.io.File;

/**
 * @author lxg
 * @description 1.Filei类概述和构造方法演示
 * @date 2021/10/7
 *
 * File类:
 * 构造方法:
 *      File(String pathbname) 通过将给定的路径名字符串来转换为抽象路径名来创建新的File实例
 *      File(String parent,String child):从父路径名字符串和子路径名字符串来创建新的File类
 *      File(File parent,String child):从父路径名和子路径名创建新的File实例
 *
 */
public class File1 {
    public static void main(String[] args) {
        //File(String pathbname) 通过将给定的路径名字符串来转换为抽象路径名来创建新的File实例
        File file1 = new File("E:\\IO\\text1.txt");
        System.out.println(file1);

        //File(String parent,String child):从父路径名字符串和子路径名字符串来创建新的File类
        File file2 = new File("E:\\IO","test2.txt");
        System.out.println(file2);

        //File(File parent,String child):从父路径名和子路径名创建新的File实例
        File file3 = new File("E:\\IO");
        File file4 = new File(file3,"test3.txt");
        System.out.println(file4);


    }
}

File类创建功能

package com.lxg.io.file;

import java.io.File;
import java.io.IOException;

/**
 * @author lxg
 * @description 2.File类创建功能
 * @date 2021/10/7
 *
 *
 */
public class File2 {
    public static void main(String[] args) throws IOException {
        //File f = new File("E:\\IO");

        //当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件,如果文件不存在则创建,
        // 返回true,如果文件存在,则返回false
        //f.createNewFile();


        //创建由此抽象路径命名的目录
        //f.mkdir();

        //创建由此抽象路径命名的目录,包括任何必须但不存在的目录,创建多级目录
        //f.mkdirs();

        //获取绝对路径
        //f.getAbsolutePath();

        //-------------------------------------------------
        //创建文件
        File f1 = new File("E:\\IO\\java.txt");
        boolean newFile = f1.createNewFile();
        System.out.println(newFile);

        //创建目录
        File f2 = new File("E:\\IO\\JavaSE");
        boolean mkdir = f2.mkdir();
        System.out.println(mkdir);

        //创建多级目录
        File f3 = new File("E:\\IO\\JavaWeb\\HTML");
        boolean mkdirs = f3.mkdirs();
        System.out.println(mkdirs);

    }
}

File类判断和获取功能

package com.lxg.io.file;

import java.io.File;

/**
 * @author lxg
 * @description File类判断和获取功能
 * @date 2021/10/7
 */
public class File3 {
    public static void main(String[] args) {
        File f = new File("E:\\IO");

        //判断是否为目录
        boolean directory = f.isDirectory();
        //判断是否为文件
        boolean file = f.isFile();
        //判断是否存在
        boolean exists = f.exists();
        //获取绝对路径
        String absolutePath = f.getAbsolutePath();
        //将抽象路径名转换为路径名字字符串
        String path = f.getPath();
        //返回此抽象路名名表示的文件或目录名称
        String name = f.getName();
        //返回此路径名表示的目录中的文件和目录的名称字符串数组
        String[] list = f.list();
        //返回子路径名表示的目录中的文件和目录的file对象数组
        File[] files = f.listFiles();

    }
}

File删除功能

package com.lxg.io.file;

import java.io.File;
import java.io.IOException;

/**
 * @author lxg
 * @description File类删除功能
 * @date 2021/10/7
 * 删除目录是的注意事项:
 *  如果一个目录中由内容(目录、文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录。
 *
 */
public class File4 {
    public static void main(String[] args) throws IOException {
        //File f = new File("E:\\IO");
        //删除由此抽象路径表示的文件或目录
        //boolean delete = f.delete();

        //创建&删除文件
        File f = new File("Java\\java.txt");
        boolean newFile = f.createNewFile();
        boolean delete = f.delete();

        //创建目录&删除目录
        File f2 = new File("Java\\a");
        boolean mkdir = f2.mkdir();
        boolean delete1 = f2.delete();

    }
}

递归解决问题思想

package com.lxg.io.file;

/**
 * @author lxg
 * @description 递归
 * @date 2021/10/7
 *
 * 递归概述:
 *  一编程的角度来看,递归指的是方法定义中调用此方法本身的现象
 *
 * 递归解决问题的思路:
 *  把一个复杂问题层层转化为一个与原问题相似的规模较小的问题来求解,
 *  递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算。
 *
 * 递归解决问题需要找出两个内容:
 * 1.递归出口:否则会出现内存提出
 * 2.递归规则:与原问题相似的规模较小的问题
 *
 */
public class File5 {
    public static void main(String[] args) {

        System.out.println(f(20));

        System.out.println(jiecheng(5));
    }


    /**
     * 递归求n的阶乘
     * @param n
     * @return
     */
    public static int jiecheng(int n){
        if(n==1){
            return 1;
        }else{
            return n*jiecheng(n-1);
        }
    }

    /**
     * 递归解决兔子数量计算
     * @param n
     * @return
     */
    public static int f(int n){
        if(n==1 || n==2){
            return 1;
        }else{
            return f(n-1)+f(n-2);
        }
    }
}

使用递归遍历目录

package com.lxg.io.file;

import java.io.File;

/**
 * @author lxg
 * @description 使用递归遍历目录
 * @date 2021/10/7
 *
 * 需求:给定一个路径(E:\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
 * 思路:
 *  - 根据给定的路径创建File类
 *  - 定义一个方法,用于获取给定路径目录下的所有内容,参数为第一步创建的File对象
 *  - 获取给定的File目录下所有的文件或者目录的File数组
 *  - 遍历还File数组,得到每一个File对象
 *  - 判断给File对象是否是目录
 *         是:递归调用
 *         不是:获取绝对路径输出到控制台
 *  - 调用方法
 *
 */
public class File6 {
    public static void main(String[] args) {
        File f= new File("E:\\IO");
        getAllFilePath(f);
    }

    /**
     * 获取给定目录下的所有内容
     * @param srcFile
     */
    public static void getAllFilePath(File srcFile){
        //获取给定目录下的所有文件后者目录的数组
        File[] files = srcFile.listFiles();
        //遍历该数组,得到每一个file对象
        if(files!=null){
            for (File f:files) {
                //判断是否是目录
                if(f.isDirectory()){
                    //是,递归掉用方法
                    getAllFilePath(f);
                }else {
                    //不是,输出文件路径
                    System.out.println(f.getAbsoluteFile());
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luo_xguan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值