JavaSE学习笔记 IO流之File类的使用

1.关于File类的理解

  • 1.File类声明在java.io包下
  • 2.File类的一个实例化对象,可以代表一个文件或者一个文件夹(或者文件目录)
  • 3.File类中涉及到文件或者文件目录的创建、删除等方法,但没有涉及到如何写入文件内容或者读取文件内容。当需要写入文件内容或者读取文件内容,必须使用IO流来完成。
  • 4.File类的对象常作为参数传递到流的构造器中,指明读取或写入的"终点"。

2.File类的构造方法

在这里插入图片描述

构造方法1—File(String pathname):根据一个路径得到File对象

import java.io.File;
public class MyTest {
    public static void main(String[] args) {
        //构造方法1:File(String pathname):根据一个路径得到File对象。
        //这里pathname可以使用绝对路径也可以使用相对路径
        //绝对路径:带有盘符号的一个详细的路径
        //相对路径:不带盘符号,Java项目中的相对路径,就指的是项目的根目录

        //使用绝对路径
        File file = new File("C:\\Users\\zlb\\Desktop\\a.txt");
        //使用相对路径
        File file1 = new File("b.txt");


    }

构造方法2—File(String parent, String child):根据一个目录和一个子文件/目录得到File对象

import java.io.File;
public class MyTest2 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\zlb\\Desktop\\a.txt");
    //构造方法2:File(String parent, String child)
    //根据一个目录和一个子文件/目录得到File对象
                               //父路径                  子文件名
        File file1 = new File("C:\\Users\\zlb\\Desktop", "a.txt");
    }
}

构造方法3—File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

import java.io.File;
public class MyTest3 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\zlb\\Desktop\\a.txt");
        File file1 = new File("C:\\Users\\zlb\\Desktop", "a.txt");
        
        //File(File parent, String child)
        // 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
        //封装父目录
        File file2 = new File("C:\\Users\\zlb\\Desktop");
        File file3 = new File(file2, "a.txt");
        
        //     /上坡杠      \下坡杠
        File file4 = new File("C:\\Users\\zlb\\Desktop\\a.txt");
        File file5 = new File("C:/Users/zlb/Desktop/a.txt");


    }
}


3.File类的创建功能

File类的创建功能
public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了。注意这个方法只能创建单层目录 ,如果创建多层目录得一层一层创建
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 。可以创建多层目录 ,当然也可以创建单层目录

创建文件—public boolean createNewFile()

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

public class MyTest {
    public static void main(String[] args) throws IOException {
        //相对路径:项目目录的根目录下
        File file = new File("a.txt");
        //绝对路径:带有盘符的详细路径
        File file1 = new File("G:\\zlb\\IdeaProjects\\JavaFile文件类的学习\\b.txt");

        //public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
        boolean b = file.createNewFile();
        System.out.println(b);

        boolean b1 = file1.createNewFile();
        System.out.println(b1);


    }
}

运行后的结果为:
在这里插入图片描述


创建单级文件夹与多级文件夹----public boolean mkdir()/mkdirs()

import java.io.File;
public class MyTest2 {
    public static void main(String[] args) {

        //创建单级文件夹
        File file = new File("C:\\Users\\zlb\\Desktop\\aa");
        boolean mkdir = file.mkdir();
        System.out.println(mkdir);

        //创建多级文件夹
        //创建单级或多级目录。返回值的第一次创建成功返回true,
        //如果目录已经存在,重复创建返回false
        File file1 = new File("C:\\Users\\zlb\\Desktop", "demo\\aa\\bb");
        boolean b1 = file1.mkdirs();
        System.out.println(b1);

    }

4.File类的删除功能

File类的删除功能
public boolean delete():删除文件或者文件夹

注意:删除文件夹时,当这个文件夹为空文件夹,可以直接删除。如果这个文件夹里面有文件,则不能删除。同时需要注意的是Java中的删除是不走回收站的,直接执行删除的操作。

import java.io.File;
public class MyTest3 {
    public static void main(String[] args) {
        File file = new File("a.txt");
        //删除文件,不走回收站,删除成功返回true,删除失败返回false
        boolean b = file.delete();
        System.out.println(b);


        File file1 = new File("C:\\Users\\zlb\\Desktop\\aa");
        //删除文件夹:当文件夹为空时,可以直接删除;当文件夹为不为空时,不能直接进行删除
        boolean b1 = file1.delete();
        System.out.println(b1);

    }
}


5.File类的重命名功能

File类的重命名功能
public boolean reameTo(File dest):把文件重命名为指定的文件路径

如果命名前后文件的路径名相同,就是修改名字的操作。如果命名前后文件的路径名不相同,就是修改名字并且进行剪切的操作。

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

public class MyTest {
    public static void main(String[] args) throws IOException {
        //修改前后的文件路径名相同,就是改名。
        File file = new File("b.txt");
        File file1 = new File("hello.txt");
        boolean b = file.renameTo(file1);
        System.out.println(b);

        //修改前后的文件路径名不相同,就是改名并且剪切的操作
        File file2 = new File("C:\\Users\\zlb\\Desktop\\java.txt");
        boolean b1 = file2.createNewFile();
        System.out.println(b1);
        boolean b2 = file1.renameTo(file2);
        System.out.println(b2);


    }
}


6.File类的判断功能

File类的判断功能
public boolean isDirectory(): 判断是否是目录
public boolean isFile(): 判断是否是文件
public boolean exists(): 判断是否存在
public boolean canRead(): 判断是否可读
public boolean canWrite(): 判断是否可写
public boolean isHidden(): 判断是否隐藏
public boolean isAbsolute(); 判断是否使用的是绝对路径
import java.io.File;
public class MyTest2 {
    public static void main(String[] args) {
        File file = new File("hello.txt");
        if(file.isFile()){
            System.out.println("是文件");
        }if(file.isDirectory()){
            System.out.println("是目录");
        }else{
            System.out.println("不是目录");
        }
        if(file.exists()){
            System.out.println("文件存在");
        }

    }
}

运行后的结果为:
在这里插入图片描述


import java.io.File;
public class MyTest3 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\zlb\\Desktop\\java.txt");
        if(file.isAbsolute()){
            System.out.println("使用的是绝对路径");
        }else{
            System.out.println("使用的不是绝对路径");
        }

        if(file.canRead()){
            System.out.println("文件可读");
        }else {
            System.out.println("文件不可读");
        }
        if(file.canWrite()){
                System.out.println("文件可写");
            }else{
            System.out.println("文件不可写");
        }

        if(file.isHidden()){
            System.out.println("文件是隐藏的");
        }else{
            System.out.println("不是隐藏文件");
        }
    }
}

运行后的结果为:
在这里插入图片描述


7.File类的获取功能

File类的获取功能
public String getAbsolutePath():获取绝对路径
public String getPath():获取相对路径
public String getParent() :返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
public File getParentFile() :返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
public long getTotalSpace() :返回此抽象路径名指定的分区大小。 返回总容量 单位字节。
public long getFreeSpace() :返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量 单位字节
public String getName():获取名称
public long length():获取长度。返回的是文件字节数
public long lastModified():获取最后一次的修改时间,毫秒值
public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
import java.io.File;
public class MyTest {
    public static void main(String[] args) {
        File file = new File("hello.txt");
        //获取文件的绝对路径
        String absolutePath = file.getAbsolutePath();
        System.out.println(absolutePath);
        //获取文件的相对路径
        String path = file.getPath();
        System.out.println(path);
        //public String getParent() 返回此抽象路径名父目录的路径名字符串
        String parent = file.getParent();
        System.out.println(parent);
        //public File getParentFile():返回此抽象路径名父目录的抽象路径名
        File parentFile = file.getParentFile();
        System.out.println(parentFile);
        //public String getName():获取名称
        String name = file.getName();
        System.out.println(name);
        //public long length():获取长度。字节数
        long length = file.length();
        System.out.println(length);
    }
}

运行后的结果为:
在这里插入图片描述


import java.io.File;
public class MyTest2 {
    public static void main(String[] args) {
        File file = new File("D:\\");
        //获取总空间大小单位是字节 1byte=8bit  1kb=1024byte  1M=1024kb  1G=1024M
        long totalSpace = file.getTotalSpace();
        System.out.println("D盘总空间为:"+totalSpace/1024/1024/1024.0+"GB");
        //获取剩余空间
        long freeSpace = file.getFreeSpace();
        System.out.println("D盘可用空间为:"+freeSpace/1024/1024/1024.0+"GB");

    }
}

运行后的结果为:
在这里插入图片描述


import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyTest3 {
    public static void main(String[] args) {
        File file = new File("hello.txt");
        //public long lastModified():获取最后一次的修改时间,毫秒值
        long time = file.lastModified();
        System.out.println("毫秒值:"+time);

        //将文件最后一次修改时间的毫秒值转换为具体可见的时间
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String format = simpleDateFormat.format(new Date(time));
        System.out.println(format);

    }
}

运行后的结果为:
在这里插入图片描述


7.1 练习:输出指定目录下指定后缀的文件名

需求:判断桌面上demo目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称

import java.io.File;
import java.io.FileFilter;

public class MyTest4 {
    public static void main(String[] args) {
        //判断桌面上demo目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
        File file = new File("C:\\Users\\zlb\\Desktop\\demo");

        //实现方式一:利用listFiles()方法来遍历判断
        File[] files = file.listFiles();
        for (File file1 : files) {
            if(file1.isFile()&&file1.getName().endsWith(".jpg")){
                System.out.println(file1.getName());
            }
        }

        System.out.println("=================");
        //实现方式二:通过文件名称过滤器来进行处理
       file.listFiles(new FileFilter() {
           @Override
           public boolean accept(File f) {
               if(f.isFile()&&f.getName().endsWith(".jpg")){
                   System.out.println(f.getName());
                   return true;

               }
               return false;
           }
       });

    }
}

运行后的结果为:
在这里插入图片描述


总结

本节主要介绍了File类的构造方法与常见的一些使用方法,但File类没有涉及到如何写入文件内容或者读取文件内容。当需要写入文件内容或者读取文件内容,必须使用IO流来完成。后面我们将具体学习字节流与字符流,对文件进行书写与读取。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值