java进阶基础---2.2---File类的概念及方法

小梁同学 の

Java学习旅途

你好! 这是小梁同学使用 博客 所记录的文章笔记,作为一个初学者的从基础到未来的记录,如果你想和我一起在Java学习路程上坚持下去,欢迎你的关注与指正。

新的将来

万丈高楼平地起,未来只能靠自己
从无到有,从零到一,学习路上没有尽头
每日一文,每日一记,跟着软件向前努力
加油!!!!!

详解代码均在以下标题后的链接中

以下所有有关代码,都是个人在上完课后自己重新敲代码之后所做笔记后上传,并非原搬直接上传,谢谢理解

二.File类

1.基本概念

java.io.File类用于描述文件或目录的路径信息,可以获取文件的大小等属性。

2.构造方法

方法名说明
File(String pathName)通过将给定的路径名字符串转换成File对象
File(String parent,String child)从父类的路径名和子类的文件名来创建一个File对象
File(File parent,String child)从父类的File对象和子类的文件名来创建一个File对象
public class Test01 {
    public static void main(String[] args) {
        //file01对象理解成文件的描述符,操作文件用
        File file01 = new File("./myTest.txt");

        //第一个参数是路径(父类),第二个参数是目标文件的名称(子类)
        File file02 = new File("./", "myTest.txt");

        //file04中第一个参数使用的是File类型的对象(父类)
        //		第二个参数是目标文件的名称(子类)
        File file03 = new File("./");
        File file04 = new File(file03, "myTest.txt");
        System.out.println(file04);

        /*
        注:路径的分类
        相对路径:
        当前路径表示为:./
        上一级目录表示为:../
        上两级目录表示为:../../
        */
    }
}

3.创建功能

方法名说明
boolean createNewFile()判断是否 创建文件
boolean mkdir()判断是否 创建单个目录
boolean mkdirs()判断是否 创建多级目录
public class Test02 {
    public static void main(String[] args) throws IOException {
        //创建文件对象,或者描述符
        File file = new File("./myTest.txt");
        //创建文件
        if (file.createNewFile()){
            System.out.println("文件创建成功!");
        }else {
            System.out.println("文件创建失败!");
        }

        //创建目录
        File file02 = new File("./myDir");//创建目录的对象
        if (file02.mkdir()){
            System.out.println("目录创建成功!");
        }else{
            System.out.println("目录创建失败!");
        }

        //创建多级目录
        File file03 = new File("H/D/A/L/O");//创建多级目录的对象
        if (file03.mkdirs()){
            System.out.println("多级目录创建成功!");
        }else{
            System.out.println("多级目录创建失败!");
        }
    }
}
===========================
    文件创建成功!
	目录创建成功!
	多级目录创建成功!

注意:当文件或目录已经存在的情况下,再次创建会返回false

4.常用功能

方法名说明
boolean isDirectory()判断一个File对象是否是一个目录
boolean isFile()判断一个File对象是否是一个文件
boolean exists()判断一个文件或者目录是否存在
String getAbsolutePath()获取File对象指向的文件的绝对路径
String getPath()获取File对象指向的路劲与文件名
String[] list()获取File对象中的所有文件(字符串形式)
File[] listFiles()获取File对象中的所有文件(File对象形式)
long lastModify()获取File对象中文件最后被修改的时间
File file01 = new File("./");
File file02 = new File("./b.txt");
File file03 = new File("./myTest.txt");
File file04 = new File("./myDir");

//判断File对象是否是目录
	System.out.println(file01.isDirectory());
	System.out.println(file02.isDirectory());
	System.out.println(file03.isDirectory());
	System.out.println(file04.isDirectory());
==============
    true
	false
	false
	true
    
//判断File对象是否是文件(当文件不存在时,返回false)
    System.out.println(file01.isFile());
    System.out.println(file02.isFile());
    System.out.println(file03.isFile());
    System.out.println(file04.isFile());
==============
    false
	false
	true
	false
    
//判断文件或者目录是否存在
    System.out.println(file01.exists());
    System.out.println(file02.exists());
    System.out.println(file03.exists());
    System.out.println(file04.exists());
==============
    true
	false
	true
	true
    
//获取绝对路径
     System.out.println(file01.getAbsolutePath());
     System.out.println(file02.getAbsolutePath());
     System.out.println(file03.getAbsolutePath());
     System.out.println(file04.getAbsolutePath());
===============
    E:\Java培训课程\.
	E:\Java培训课程\.\b.txt
	E:\Java培训课程\.\myTest.txt
	E:\Java培训课程\.\myDir
        
//获取File对象指向的文件路劲和文件名
	System.out.println(file01.getPath());
	System.out.println(file02.getPath());
	System.out.println(file03.getPath());
	System.out.println(file04.getPath());
==============
    .
	.\b.txt
	.\myTest.txt
	.\myDir

File file = new File("./");
        
//获取File对象中的所有文件(字符串形式)
	 //找的是当前路径下的位置
	String[] list = file.list();
    for (String name : list) {
        System.out.println(name);
    }
==============
.idea
a.txt
H
myDir
myTest.txt
out
src
typora-setup-x64.exe
笔记

    
//获取File对象中的所有文件(File对象形式)
	File[] files = file.listFiles();
	for (File f : files) {
		System.out.println(f);
	}
==============
.\.idea
.\a.txt
.\H
.\myDir
.\myTest.txt
.\out
.\src
.\typora-setup-x64.exe
.\笔记
File file = new File("./myTest.txt");
        
//获取File对象中文件最后被修改的时间
	//返回long类型的毫秒数
	long time = file.lastModified();
	//将毫秒数转换成Date类型的对象
	Date date = new Date(time);
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	System.out.println(sdf.format(date));
==============
	2022-08-11 16:08:39

5.删除功能

方法名说明
boolean delete()删除文件或目录(空)
//文件对象
File file = new File("./myTest.txt");
if (file.delete()){
	System.out.println("文件或目录删除成功!~");
}else {
	System.out.println("文件或目录删除失败!~");
}
==========
   文件或目录删除成功!~ 

//目录对象
File file = new File("./myDir"); 
if (file.delete()){
	System.out.println("文件或目录删除成功!~");
}else {
	System.out.println("文件或目录删除失败!~");
}
==========
    文件或目录删除成功!~ 

//注:当删除不存在的文件或目录时,会返回false
    //例:再次删除已删除的文件或目录,会返回false
    
    
//多级目录对象(要先把内部目录删除才能删除高级目录)
File file = new File("./H");
if (file.delete()){
	System.out.println("文件或目录删除成功!~");
}else {
	System.out.println("文件或目录删除失败!~");
}   
==========
	文件或目录删除失败!~

6.递归操作

//10以内累加计数
public class Test05 {
    public static void main(String[] args) {
        int sumNum =sumAll(10);
        System.out.println(sumNum);
    }
    private static int sumAll(int i){
        if (i == 1){
            //结束
            return 1;
        }
        return i + sumAll(i-1);
    }
}
==========
    55
//递归删除多目录
public class Test06 {
    public static void main(String[] args) {
        File file = new File("./H");
        delDir(file);
    }
    private static void delDir(File file) {
        //获取当前目录中的所有File类型的文件
        File[] files = file.listFiles();
        //判断目录是否为空
        if(null != files){
            for (File f : files) {
                //判断目录是否为空
                //如果是目录,递归自己调用自己
                if (f.isDirectory()){
                    delDir(f);
                }else{
                    //如果不是目录,则直接删除文件
                    f.delete();
                }
            }
        }
        //当目录为空,直接删除
        file.delete();
    }
}

7.课后习题

1.自定义异常类AgeException、NameException。当创建学生类对象时,要求年龄范围0-150,姓名2-4个长度,如果不在范围之内,则抛出异常。
2.递归实现获取目录下所有的文件和目录的绝对路径。

注:习题答案在下方链接,欢迎同学们批评指正呀!!!

java进阶基础—2.1----上一章节: 跳转
java进阶基础—课后习题: 跳转
java进阶基础—2.3----下一章节: 跳转

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值