Java基础学习IO流之File(21)

1. File

  • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件,例如D:\lyy\java.txt
  • 相对路径:必须使用取自其他路径的信息进行解释,如lyy\java.txt

File:文件和目录路径名的抽象表示

  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
    在这里插入图片描述
package Java21;

import java.io.File;

public class demo1 {
    public static void main(String[] args) {
        //三种构造方法做了同样的事情,需要指向一个文件可以采用以下任意一种
        File f1 = new File("D:\\lyy\\java.txt");
        System.out.println(f1);

        File f2 = new File("D:\\lyy","java.txt");
        System.out.println(f2);

        File f3 = new File("D:\\lyy");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
    }
}

代码结果

1.1 File类创建功能

在这里插入图片描述

  • createNewFile()方法创建文件,如果文件不存在就创建文件并返回true,如果存在就不创建文件返回false
  • mkdir()用于创建目录,该方法创建的目录的父类目录必须存在
  • mkdirs()用于创建多级目录
package Java21.package1;

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

public class demo1 {
    public static void main(String[] args) throws IOException {
        //在D:\\lyyJava目录下创建java.txt文件
        File f1 = new File("D:\\lyyJava\\java.txt");
        System.out.println(f1.createNewFile());

        //在D:\\lyyJava目录下创建一个目录javaSE,mkdir方法父类目录必须存在
        File f2 = new File("D:\\lyyJava\\javaSE");
        System.out.println(f2.mkdir());

        //在D:\\lyyJava目录下创建一个多级目录javaSE\\HTML
        File f3 = new File("D:\\lyyJava\\javaSE\\HTML");
//        System.out.println(f3.mkdir());
        System.out.println(f3.mkdirs());

        //在D:\\lyyJava目录下创建一个javase.txt文件
        File f4 = new File("D:\\lyyJava\\javase.txt");
        System.out.println(f2.mkdir());//创建的不是文件而是创建一个名称为javase.txt的文件夹

    }
}

1.2 File类判断和获取功能

在这里插入图片描述

package Java21;

import java.io.File;

public class demo2 {
    public static void main(String[] args) {
        //创建File对象
        File f = new File("D:\\lyy");

//        public boolean isDirectory():测试此抽象路径表示的File是否为目录
//        public boolean isFile():测试此抽象路径表示的File是否为文件
//        public boolean exists():测试此抽象路径表示的File是否存在
        System.out.println(f.isDirectory());
        System.out.println(f.isFile());
        System.out.println(f.exists());

//        public String getAbsoluteFile():返回此抽象路径名的绝对路径名字符串
//        public String getPath():将此抽象路径名转化为路径名字符串
//        public String getName():返回此抽象路径名表示的文件或目录的名称
        System.out.println(f.getAbsoluteFile());
        System.out.println(f.getPath());
        System.out.println(f.getName());
        System.out.println("-----------");

        //public String[] list() 返回此抽象路径中的文件和目录名称的字符串
        File f2 = new File("D:\\lyy\\src");
        String[] stArray = f2.list();
        for (String st:stArray){
            System.out.println(st);
        }
        System.out.println("--------------");

        //public File[] listFile() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件
        File[] fileArray = f2.listFiles();
        for(File file:fileArray){
            System.out.println(file);
            System.out.println(file.getName());
//            if(file.isFile()){
//                System.out.println(file.getName());
//            }
        }
    }
}

1.2 File类删除功能

  • public boolean delete() :删除由此抽象路径名表示的文件或目录
  • 删除时的注意事项:如果一个目录中有内容,不能直接删除,应先删除目录中的内容,最后才能删除目录。
package Java21;

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

public class demo3 {
    public static void main(String[] args) throws IOException {
        //创建文件
        File f1 = new File("D:\\lyy\\java.txt");
        System.out.println(f1.createNewFile());

        //删除文件
        System.out.println(f1.delete());

        //创建目录
        File f2 = new File("D:\\lyy\\lyyss");
        System.out.println(f2.mkdir());
        
        //删除目录
        System.out.println(f2.delete());
    }
}

递归遍历目录

package Java21;

import java.io.File;

public class demo4 {
    public static void main(String[] args) {
        File src = new File("D:\\lyy\\src");

        //调用方法
        getallFile(src);
    }
    //递归遍历目录
    public static void getallFile(File src){
        //获取给定File目录下的所有文件或者目录的File数组
        File[] fileArray = src.listFiles();
        //遍历数组,得到每一个对象
        if(fileArray != null){
            for (File file:fileArray){
                //判定File对象是否是目录
                if(file.isDirectory()){
                    //是,调用递归
                    getallFile(file);
                }else {
                    //不是,输出绝对路径
                    System.out.println(file.getAbsoluteFile());
                }
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值