Java基础程序——IO流File类

目录

1、IO概述

2、File类

3、File类的静态成员变量

4、File类的构造方法

5、相对路径和绝对路径

6、File类的常用方法

7、File类创建功能

8、File类删除功能

9、File类判断功能

10、File类的list获取功能

11、文件过滤器

12、递归遍历全目录


1、IO概述

  • 要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘、光盘、U盘等)上。
  • 把内存中的数据存储到持久化设备上,这个动作称为输出(写)Output操作
  • 把持久化设备中的数据读取到内存中,这个动作称为输入(读)Input操作
  • 这种输入输出的动作称为IO操作

2、File类

  • 概述:文件和目录路径名的抽象表现形式。
  • 即,在Java中把文件或者目录(文件夹)都封装成File对象

3、File类的静态成员变量

  • pathSeparator: 与系统有关的路径分割符

是一个分号(;),目录的分割(window中环境变量配置各个路径用分号分割,表示一个完整的路径结束)Linux中是冒号(:)

  • separator:与系统有关的默认名称分隔符

向右的斜杠(\),目录名称分割;Linux中是向左的斜杠(/)


4、File类的构造方法

  • File(String pathname)
  • File(String parent, String child)
  • File(File parent. String child)
public class FileDemo {
    public static void main(String[] args) {
        String pathName = "d:\\实训\\test.java";
        File file1 = new File(pathName);
        System.out.println(file1);

        File file2 = new File("d:\\实训", "test.java");
        System.out.println(file2);

        File dir = new File("d:\\实训"); // 目录
        File file3 = new File(dir, "test.java");
        System.out.println(file3);
    }
}

// 这里的文件 "d:\\实训\\test.java" 可以不存在

5、相对路径和绝对路径

  • 相对路径:相对于某个位置

D:\A\Java\jdk1.8.0_92\bin

D:\A\Java\jdk1.8.0_92

  • 绝对路径:一个固定的路径,从盘符开始。在系统中具有唯一性。

6、File类的常用方法

  • String getAbsolutePath();  返回此抽象路径名的绝对路径名字符串
  • String getName();   返回由此抽象路径名表示的文件或目录的名称
  • String getPath();   将此抽象路径名转换为一个路径名字
  • long length();  返回由此抽象路径名表示的文件的长度
public class FileMethodDemo {
    public static void main(String[] args) {
        File file = new File("src\\day0419\\IO\\FileDemo");
        String absolutePath = file.getAbsolutePath();
        System.out.println("绝对路径:"+absolutePath);
        String name = file.getName();
        System.out.println("文件名称:"+name);
        // File中封装的路径是什么,获取到的就是什么
        String path = file.getPath();
        System.out.println("相对路径:"+path);
        long length = file.length();
        System.out.println("文件大小:"+length);
    }
}

7、File类创建功能

  • createNewFile()  创建文件
  • mkdir()  创建文件夹
  • mkdirs() 创建多层文件夹
public class FileMethodDemo {
    public static void main(String[] args) {
        File file = new File("demo\\src\\test.java");
        try {
            boolean create = file.createNewFile();
            System.out.println(create ? "文件创建成功" : "文件创建失败");
        } catch (IOException e) {
            e.printStackTrace();
        }

        File file1 = new File("D:\\实训\\test\\0419");
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir ? "文件创建成功" : "文件创建失败");
        
    }
}

8、File类删除功能

  • delete()   删除文件(注意:这里是直接从硬盘删除,不走回收站,慎用!)
        new File("d:\\d\\test");
        boolean delete = file.delete();
        System.out.println(delete ? "文件删除成功" : "文件删除失败");
        // 删除目录时,如果目录中有内容,则无法直接删除,只有将目录中的内容都删除后,保证该目录为空,这时才能删除该目录

9、File类判断功能

  • boolean exists();  判断File构造方法中封装路径是否存在。
  • boolean isDirectory()  判断File构造方法中封装路径是否是文件夹。
  • boolean isDirectory()  判断File构造方法中封装路径是否是文件。
        File file1 = new File("d:\\A\\test");
        System.out.println(file1.exists());
        File file2 = new File("d:\\A");
        System.out.println(file2.isDirectory() ? "是文件夹" : "不是文件夹");
        System.out.println(file2.isFile() ? "是文件" : "不是文件");

10、File类的list获取功能

  • String[] list();  返回一个字符串数组,这些字符串指定,此抽象路径名表示的目录中的文件和目录
  • File[] listFiles();  返回一个抽象路径名数组,这些路径名表示,此抽象路径名表示的目录中的文件
  • static File[] listRoots();  获取系统中的所有根目录   
  // 返回的只有名字    
  public static void listMethod(){
        File file = new File("D:\\实训\\Demo\\src");
        String[] list = file.list();
        for(String s :list){
            System.out.println(s);
        }
    }

   // 返回的是目录或者文件的全路径
   public static void listFilesMethod(){
        File file = new File("D:\\实训\\Demo\\src");
        File[] list = file.listFiles();
        for(File s :list){
            System.out.println(s);
        }
    }

   // 返回的是可用的文件系统根
   public static void listRootsMethod(){
        File[] list = File.listRoots();
        for(File s :list){
            System.out.println(s);
        }
    }

注意:在获取指定目录下的文件或者文件夹时,必须满足以下两个条件

  1. 指定的目录必须存在;
  2. 指定的必须是目录,否则容易引发返回数组为null,出现NullPointException

11、文件过滤器

作用:过滤一个目录下的指定扩展名的文件,或者包含某个关键字的文件夹

接口FilenameFilter

  • accept(File dir,String name)
public class MyFilenameFilter implements FilenameFilter{
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(".java");
    }
}
  
  public static void listFilenameFilterMethod(){
        File file = new File("D:\\实训\\Demo\\src");
        File[] files = file.listFiles(new MyFilenameFilter());
        for(File s :files){
            System.out.println(s);
        }
    }

接口FileFilter

  • accept(File pathname)
public class MyFileFilter implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        return pathname.isDirectory();
    }
}
    
public static void listFilterMethod(){
        File file = new File("D:\\实训\\Demo\\src");
        File[] files = file.listFiles(new MyFileFilter());
        for(File s :files){
            System.out.println(s);
        }
    }

两者区别:

  • FilenameFilter过滤器中的accept()方法接受两个参数(当前文件夹或文件所在的路径;当前文件夹或文件对象的名称)
  • FileFilter过滤器中的accept()方法接受一个参数(当前文件夹或文件对象)

12、递归遍历全目录

//打印 src 目录下的所有文件:   
getAllFileMethod(new File("D:\\实训\\Demo\\src"));

    public static void getAllFileMethod(File dir){
        File[] files = dir.listFiles();
        for(File f : files){
            if(f.isDirectory()){
                getAllFileMethod(f);
            }
            System.out.println(f);
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值