Java File类详解(中)

  • File的常见成员方法
  • 判断、获取相关的方法

方法名称

说明

public boolean isDirectory()

判断此路径名表示的File是否为文件夹

public boolean isFile()

判断此路径名表示的File是否为文件

public boolean exists()

判断此路径名表示的File是否存在

public long length()

返回文件的大小(字节数量Bytes)

public String getAbsolutePath()

返回文件的绝对路径

public String getPath()

返回定义文件时使用的路径

public String getName()

返回文件的名称,带后缀

public long lastModified()

返回文件的最后修改时间(时间毫秒值)

方法使用示例:

import java.io.File;
import java.util.Date;

public class FileDemo2 {
    public static void main(String[] args) {

        // 1.根据字符串表示的路径,变成File对象
        String path = "E:/JavaCode/Files/a.txt";
        File f1 = new File(path);
        // 2.方法使用示例
        System.out.println("isFile:" + f1.isFile());
        System.out.println("isDirectory:" + f1.isDirectory());
        System.out.println("exists:" + f1.exists());
        System.out.println("length:" + f1.length());

        System.out.println("getAbsolutePath:" + f1.getAbsolutePath());
        System.out.println("getPath:" + f1.getPath());
        System.out.println("getName:" + f1.getName());
        System.out.println("lastModified:" + new Date(f1.lastModified()));

    }
}

一种可能的输出为:

isFile:true

isDirectory:false

exists:true

length:131

getAbsolutePath:E:\JavaCode\Files\a.txt

getPath:E:\JavaCode\Files\a.txt

getName:a.txt

lastModified:Mon Dec 04 20:26:37 CST 2023
  1. 方法length()

方法length的作用是返回文件的大小(字节数量)。

1:这个方法只能获取文件的大小,单位是字节,如果单位我们要是M,G,可以不断的除以1024

2:这个方法无法获取文件夹的大小,如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起。

  1. 方法getName()

如果调用者是文件,本方法将返回该调用者的文件和后缀名,也即扩展名。如果调用者是文件夹:则返回的就是文件夹的名字。

  • 创建、删除相关的方法

方法名称

说明

public boolean createNewFile()

创建一个新的空的文件

public boolean mkdir()

创建单级文件夹

public boolean mkdirs()

创建多级文件夹

public boolean delete()

删除文件、空文件夹

delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站

  1. 方法createNewFile
  1. createNewFile创建一个新的空的文件。如果当前路径表示的文件是不存在的,则创建成功,方法返回true;如果当前路径表示的文件是存在的,则创建失败,方法返回false。
  2. 如果创建文件时其父级路径是不存在的,那么方法会有异常IOException。
  3. createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件。

  1. 方法mkdir
  1. windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
  2. mkdir方法只能创建单级文件夹,无法创建多级文件夹。

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

public class FileDemo3 {
    public static void main(String[] args) throws IOException {
        // 1.创建一个新的空的文件
        File f1 = new File("E:/JavaCode/Files/c.txt");
        boolean flag = f1.createNewFile();
        System.out.println(flag);

        // 2.mkdir
        // 细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
        // 细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
        File f2 = new File("E:/JavaCode/Files/aaa");
        boolean flag2 = f2.mkdir();
        System.out.println(flag2);

        // 3.mkdirs 创建多级文件夹
        File f3 = new File("E:/JavaCode/Files/aaa/bbb/ccc");
        boolean flag3 = f3.mkdirs();
        System.out.println(flag3);
    }
}
  1. 方法delete

用来删除文件或文件夹。

  1. 如果删除的是文件,则直接删除,不走回收站。
  2. 如果删除的是空文件夹,则直接删除,不走回收站,
  3. 如果删除的是有内容的文件夹,则删除失败。
  • 获取并遍历相关的方法

方法名称

说明

public File[] listFiles()

获取当前该路径下所有内容

本方法的特点:

  1. 当调用者File表示的路径不存在时,返回null当调用者File表示的路径是文件时,返回null
  2. 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
  3. 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  4. 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  5. 当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

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

public class FileDemo5 {
    public static void main(String[] args) throws IOException {
        // 1.创建一个新的空的文件
        File f1 = new File("E:/JavaCode/");


        // 2.listFiles()方法
        //作用:获取aaa文件夹里面的所有内容,把所有的内容放到数组中返回
        File[] files = f1.listFiles();
        for (File file : files) {
            // file依次表示文件夹中每一个文件或文件夹
            System.out.println(file.getAbsolutePath());
        }
    }
}

  • 获取并遍历相关的方法

方法名称

说明

public static File[] listRoots()

列出可用的文件系统根

public String[] list()

获取当前该路径下所有内容

public String[] list(FilenameFilter filter)

利用文件名过滤器获取当前该路径下所有内容

public File[] listFiles()

获取当前该路径下所有内容

public File[] listFiles(FileFilter filter)

利用文件名过滤器获取当前该路径下所有内容

public File[] listFiles(FilenameFilter filter)

利用文件名过滤器获取当前该路径下所有内容

  1. 方法listRoots

文件系统根,对于Windows系统来说就是列出所有盘符。

  1. 方法list

获取当前目录下的内容。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Arrays;

public class FileDemo6 {
    public static void main(String[] args) throws IOException {
        // 1. listRoots 获取系统中所有的盘符
        File[] files = File.listRoots();
        System.out.println(Arrays.toString(files));

        System.out.println("===============");

        // 2. list 获取当前该路径下所有内容(仅仅能获取名字)
        File f1 = new File("E:/JavaCode/Files");
        String[] list = f1.list();
        for (String s : list) {
            System.out.println(s);
        }

        // 3. list(FilenameFilter filter) 利用文件名过滤器获取当前路径下的所有内容
        // 需求:获取目录下所有txt文件
        File f2 = new File("E:/JavaCode/Files");
        f2.list(new FilenameFilter() {
            //accept方法的形参,依次表示aaa文件夹里面每一个文件或者文件夹的路径
            // 参数一:父级路径
            // 参数二:子级路径
            //返回值:如果返回值为true,就表示当前路径保留
            //        如果返回值为false,就表示当前路径舍弃不要
            @Override
            public boolean accept(File dir, String name) {
                File src = new File(dir, name);
                return src.isFile() && name.endsWith(".txt");
            }
        });

    }
}

  1. 方法listFiles(FileFilter filter)

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;

public class FileDemo7 {
    public static void main(String[] args) throws IOException {
        // . listFiles(FileFilter filter) 利用文件名过滤器获取当前路径下的所有内容
        // 需求:获取目录下所有txt文件
        File f2 = new File("E:/JavaCode/Files");

        // FileFilter
        File[] txtFiles1 = f2.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile() && pathname.getName().endsWith(".txt");
            }
        });

        // FilenameFilter
        File[] txtFiles2 = f2.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File src = new File(dir, name);
                return src.isFile() && name.endsWith(".txt");
            }
        });

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

唐骁虎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值