19.Java进阶之文件操作入门

文章目录

1.我们为何要操作文件?

首先,我们思考一个问题,在没学习JDBC之前,我们怎么将程序产生的数据持久化到硬盘中呢?并且我们如何去读取硬盘中的文件呢?
答案就是Java的文件操作机制,Java提供了丰富的API让我们能对文件进行操作,其中最基础的类就是File类。

2.File类能干啥?

File类主要用来获取文件本身的一些信息,例如文件所在的目录、文件的大小(也可称为长度)或文件读写权限等,但不涉及对文件的读写操作,但是对文件读写操作是基于文件的。

用户界面和操作系统使用依赖于系统的路径名 字符串命名文件和目录,而这个类提供了一个抽象的,独立于系统的层次化路径名的视图。

3.File类中的方法

3.1构造方法

File(String filename);
File(String directoryPath,String filename);
File(File dir,String filename);
其中,filename是文件名字,directoryPath是文件的路径,dir为一个目录。
使用File(String filename)创建文件时,该文件被认为与当前应用程序在同一目录中。
当我们顺利获取一个File对象时,我们可以调用其中的方法获取文件的相关信息。

例如:

public static void fileStudy(){
    File file  = new File("麻子.txt");
    File file1 = new File("E:/Personal/MyRepository/study","麻子.txt");
    File dir = new File("E:/Personal/MyRepository/study");
    File file2 = new File(dir,"麻子.txt");
    System.out.println(file.getAbsolutePath());
    System.out.println(file1.getAbsolutePath());
    System.out.println(dir.getAbsolutePath());
    System.out.println(file2.getAbsolutePath());
}

在这里插入图片描述

3.2其他方法

3.2.1 public boolean exists();判断文件是否存在。

public static void existsStudy(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt 文件是否存在: "+file.exists());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 是否存在: "+file1.exists());
}

在这里插入图片描述

3.2.2public String getName();获取文件的名字。

public static void getNameStudy(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt文件名称: "+file.getName());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 文件名称: "+file1.getName());
}

在这里插入图片描述

3.2.3 public boolean canRead();判断文件是否可读。

public static void canReadStudy() {
    File file = new File("麻子.txt");
    System.out.println("麻子.txt文件是否可读: "+file.canRead());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt是否可读: "+file1.canRead());
}

在这里插入图片描述

3.2.4 public boolean canWrite();判断文件是否可被写入。

public static void canWriteStudy() {
    File file = new File("麻子.txt");
    System.out.println("麻子.txt是否可写: "+file.canWrite());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt是否可写: "+file1.canWrite());
}

在这里插入图片描述

3.2.5 public long length();获取文件长度(大小)

public static void lengthStudy() {
    File file = new File("麻子.txt");
    System.out.println("麻子.txt文件大小: "+file.length());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt文件大小: "+file1.length());
}

在这里插入图片描述

3.2.6 public String getAbsolutePath();获取文件的绝对路径。

public static void absolutePathStudy() {
    File file = new File("麻子.txt");
    System.out.println("麻子.txt 文件绝对路径: "+file.getAbsolutePath());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 文件绝对路径: "+file1.getAbsolutePath());
}

在这里插入图片描述

3.2.7 public String getParent(); 获取文件的父目录描述。

public static void parentStudy(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt 文件父目录: "+file.getParent());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 文件父目录: "+file1.getParent());
}

在这里插入图片描述

3.2.8 public boolean isFile();判断文件是否是一个普通文件而非目录。

public static void isFileStudy(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt 是否是文件: "+file.isFile());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 是否是文件: "+file1.isFile());
}

在这里插入图片描述

3.2.9 public boolean isDirectory();判断文件是否是一个目录。

public static void isDirectory(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt是否是目录: "+file.isDirectory());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt是否是目录: "+file1.isDirectory());
}

在这里插入图片描述

3.2.10 public boolean isHidden();判断文件是否是隐藏文件。

public static void isHidden(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt是否是隐藏文件: "+file.isHidden());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 是否是隐藏文件: "+file1.isHidden());
}

在这里插入图片描述

3.2.11 public long lastModified();获取文件最后修改的时间戳。(时间是从1970年午夜至文件最后修改时刻的毫秒数)。

public static void lastModifiedStudy(){
    File file = new File("麻子.txt");
    System.out.println("麻子.txt最后修改时间: "+file.lastModified());
    File file1 = new File("四郎.txt");
    System.out.println("四郎.txt 件最后修改时间: "+file1.lastModified());
}

在这里插入图片描述

3.2.12 public boolean mkdir();File对象可以调用此方法创建一个目录,创建成功返回true。

public static void mkdirStudy(){
    File file1 = new File("FileStudy");
    if(!file1.exists()){
        boolean sus = file1.mkdir();
        if(sus){
            System.out.println("FileStudy 目录创建成功");
        }
    }
}

在这里插入图片描述

3.2.13 public String[] list();如果File对象是一个目录,那么此对象可以调用该方法以字符串的形式返回目录下的文件和子目录描述。

public static void listStudy(){
    File file = new File("Java基础学习");
    String[] dir = file.list();
    assert dir != null;
    for(String d:dir){
        System.out.println("Java基础学习子目录: "+d);
    }

    String[] dir1 = file.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            if(name.contains("tar"))
               return true;
            return false;
        }
    });

    assert dir1 != null;
    for(String d2:dir1){
        System.out.println("Java基础学习子目录中名称包含 tar 的目录:"+d2);
    }
}

在这里插入图片描述

3.2.14 public File[] listFiles();如果File对象关联的文件是一个目录,那么此对象可以调用该方法以File对象的形式返回目录下的文件和子目录。

public static void listFilesStudy(){
    File file = new File("Java基础学习");
    File[] files = file.listFiles();
    assert files != null;
    for(File file1:files){
        System.out.println("Java基础学习子目录: "+file1.getName());
    }
    File[] dir1 = file.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            if(name.contains("tar"))
                return true;
            return false;
        }
    });
    assert dir1 != null;
    for(File d2:dir1){
        System.out.println("Java基础学习子目录中名称包含 tar 的目录:"+d2.getName());
    }
}

在这里插入图片描述

3.2.15 public String[] list(FilenameFilter obj);该方法用字符串的形式返回目录下的指定类型的所有文件。

参数FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
当这个方法返回true时,list方法就将name文件存放到返回的数组中。

public static void listStudy(){
    File file = new File("Java基础学习");
    String[] dir = file.list();
    assert dir != null;
    for(String d:dir){
        System.out.println("Java基础学习子目录: "+d);
    }

    String[] dir1 = file.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            if(name.contains("tar"))
               return true;
            return false;
        }
    });

    assert dir1 != null;
    for(String d2:dir1){
        System.out.println("Java基础学习子目录中名称包含 tar 的目录:"+d2);
    }
}

在这里插入图片描述

3.2.16 public File[] listFiles(FilenameFilter obj);此方法用File对象返回目录下指定类型的所有文件。

public static void listFilesStudy(){
    File file = new File("Java基础学习");
    File[] files = file.listFiles();
    assert files != null;
    for(File file1:files){
        System.out.println("Java基础学习子目录: "+file1.getName());
    }
    File[] dir1 = file.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            if(name.contains("tar"))
                return true;
            return false;
        }
    });
    assert dir1 != null;
    for(File d2:dir1){
        System.out.println("Java基础学习子目录中名称包含 tar 的目录:"+d2.getName());
    }
}

在这里插入图片描述

3.2.17public boolean createNewFile();此方法可以创建一个文件。

public static void createNewFileStudy() throws IOException {
    File file = new File("四郎.txt");
    if(!file.exists()){
        boolean sus = file.createNewFile();
        if(sus) System.out.println("四郎.txt 文件创建完成!!");
    }
}

在这里插入图片描述
在这里插入图片描述

3.2.18 public boolean detele();此方法为删除一个文件的方法。

public static void deleteStudy(){
    File file = new File("四郎.txt");
    boolean sus = file.delete();
    if(sus) System.out.println("四郎.txt 文件删除完成!!");
}

在这里插入图片描述

Java基础学习/src/main/java/Progress/exa01 · 严家豆/Study - 码云 - 开源中国 (gitee.com)

如果想动手做点东西,可以参考Java动手做一做之文件编程专栏:
Java动手做一做之文件编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员小牧之

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

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

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

打赏作者

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

抵扣说明:

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

余额充值