File类

File类的方法及演示代码

基本概念:

  • java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息

常用方法:

方法功能
File(String pathname)根据参数指定的路径名来构造对象
File(String parent, String child)根据参数指定的父路径和子路径信息构造对象
File(File parent, String child)根据参数指定的父抽象路径和子路径信息构造对象
boolean exists()测试此抽象路径名表示的文件或目录是否存在
String getName()用于获取文件的名称
long length()返回由此抽象路径名表示的文件的长度
long lastModified()用于获取文件的最后一次修改时间
String getAbsolutePath()用于获取绝对路径信息
boolean delete()用于删除文件,当删除目录时要求是空目录
boolean createNewFile()用于创建新的空文件
boolean mkdir()用于创建目录
boolean mkdirs()用于创建多级目录
File[] listFiles()获取该目录下的所有内容
boolean isFile()判断是否为文件
boolean isDirectory()判断是否为目录
File[] listFiles(FileFilter filter)获取目录下满足筛选器的所有内容

演示代码:

创建文件并操作

	/**
     * 创建文件并操作
     */
    public static void test1() throws IOException {
        // 构造File类型的文件与文件关联
        File f1 = new File("g:/a.txt");
        // 若文件存在则获取文件的相关特征信息打印并且删除文件
        if (f1.exists()) {
            // 获取文件名称
            String name = f1.getName();
            System.out.println("文件名称为" + name);

            // 获取文件大小
            long length = f1.length();
            System.out.println("文件的大小为" + length);

            // 获取文件的最后一次修改时间
            long l = f1.lastModified();
            Date date = new Date(l);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String format = sdf.format(date);
            System.out.println("最后一次修改文件的时间为" + format);

            // 获取文件的绝对路径
            String absolutePath = f1.getAbsolutePath();
            System.out.println("文件的绝对路径为" + absolutePath);

            // 删除文件
            System.out.println(f1.delete()?"文件删除成功" : "文件删除失败");
        } else {
            // 文件不存在,创建新的文件
            System.out.println(f1.createNewFile()?"文件创建成功" : "文件创建失败");
        }
    }

单层目录的创建并删除操作

	/**
     * 单层目录的创建并删除操作
     */
    public static void test2() {
        File file = new File("g:/mu");
        if (file.exists()) {
            System.out.println("目录名称为" + file.getName());
            System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
        } else {
            System.out.println(file.mkdir()?"目录创建成功" : "目录创建失败");
        }
    }

多层目录的创建并删除操作

	/**
     * 多层目录的创建并删除操作
     */
    public static void test3() {
        File file = new File("g:/mu/yan/dong");
        if (file.exists()) {
            System.out.println("目录名称为" + file.getName());
            System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
        } else {
            System.out.println(file.mkdirs()?"目录创建成功" : "目录创建失败");
        }
    }

获取单个目录下的内容(不包括子目录下的内容)

	/**
     * 获取文件下的所有内容
     */
    public static void test4() {
        File file = new File("g:/mu");
        File[] files = file.listFiles();
        for (File f : files) {
            // 判断是否为文件
            if (f.isFile()) {
                System.out.println(f.getName());
            }
            // 判断是否为目录
            if (f.isDirectory()) {
                System.out.println("[" + f.getName() + "]");
            }
        }
    }

获取内容的同时进行过滤(如指定后缀名的文件)

	/**
     * 实现获取内容的同时进行过滤
     */
    public static void test5() {

        // 通过匿名内部类构建过滤器
        FileFilter fileFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt");
            }
        };
        // 通过lambda表达式构建过滤器(与匿名内部类用其一即可)
        FileFilter fileFilter2 = (File pathname) -> {return pathname.getName().endsWith(".doc");};
        File file = new File("g:/mu");
        File[] files = file.listFiles(fileFilter2);
        for (File file1 : files) {
            System.out.println(file1.getName());
        }

    }

采用递归思想获取目录及其子目录中的文件

	/**
     * 采用递归思想获取目录及其子目录中的文件
     */
    public static void show(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            // 判断是否为文件
            if (f.isFile()) {
                System.out.println(f.getName());
            }
            // 判断是否为目录
            if (f.isDirectory()) {
                System.out.println("[" + f.getName() + "]");
                show(f);
            }
        }
    }

多层文件的删除操作 慎用,该删除不进回收站,直接删除

	/**
     * 多层文件夹的删除
     * @param sPath 文件绝对路径
     * @return 删除结果
     */
    public static boolean deleteDirectory(String sPath) {
        if (!sPath.endsWith(File.separator)) {
            sPath = sPath + File.separator;
        }

        File dirFile = new File(sPath);
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            return false;
        }
        boolean flag = true;
        File[] files = dirFile.listFiles();
        if (files != null) {
            for (File ff : files) {
                if (ff.isFile()) {
                    flag = ff.delete();
                    System.out.println(ff.getName() + "删除成功");
                    if (!flag) {
                        break;
                    }
                } else {
                    flag = deleteDirectory(ff.getAbsolutePath());
                    if (!flag) {
                        break;
                    }
                }
            }
        }

        if (!flag) {
            return false;
        }
        //删除当前目录
        System.out.println(dirFile.getName() + "删除成功");
        return dirFile.delete();
    }

完整代码如下:

package file;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 对于文件操作
 */
public class FileTest {

    /**
     * 创建文件并操作
     */
    public static void test1() throws IOException {
        // 构造File类型的文件与文件关联
        File f1 = new File("g:/a.txt");
        // 若文件存在则获取文件的相关特征信息打印并且删除文件
        if (f1.exists()) {
            // 获取文件名称
            String name = f1.getName();
            System.out.println("文件名称为" + name);

            // 获取文件大小
            long length = f1.length();
            System.out.println("文件的大小为" + length);

            // 获取文件的最后一次修改时间
            long l = f1.lastModified();
            Date date = new Date(l);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String format = sdf.format(date);
            System.out.println("最后一次修改文件的时间为" + format);

            // 获取文件的绝对路径
            String absolutePath = f1.getAbsolutePath();
            System.out.println("文件的绝对路径为" + absolutePath);

            // 删除文件
            System.out.println(f1.delete()?"文件删除成功" : "文件删除失败");
        } else {
            // 文件不存在,创建新的文件
            System.out.println(f1.createNewFile()?"文件创建成功" : "文件创建失败");
        }
    }

    /**
     * 单层目录的创建并删除操作
     */
    public static void test2() {
        File file = new File("g:/mu");
        if (file.exists()) {
            System.out.println("目录名称为" + file.getName());
            System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
        } else {
            System.out.println(file.mkdir()?"目录创建成功" : "目录创建失败");
        }
    }

    /**
     * 多层目录的创建并删除操作
     */
    public static void test3() {
        File file = new File("g:/mu/yan/dong");
        if (file.exists()) {
            System.out.println("目录名称为" + file.getName());
            System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
        } else {
            System.out.println(file.mkdirs()?"目录创建成功" : "目录创建失败");
        }
    }

    /**
     * 获取文件下的所有内容
     */
    public static void test4() {
        File file = new File("g:/mu");
        File[] files = file.listFiles();
        for (File f : files) {
            // 判断是否为文件
            if (f.isFile()) {
                System.out.println(f.getName());
            }
            // 判断是否为目录
            if (f.isDirectory()) {
                System.out.println("[" + f.getName() + "]");
            }
        }
    }

    /**
     * 实现获取内容的同时进行过滤
     */
    public static void test5() {

        // 通过匿名内部类构建过滤器
        FileFilter fileFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt");
            }
        };
        // 通过lambda表达式构建过滤器(与匿名内部类用其一即可)
        FileFilter fileFilter2 = (File pathname) -> {return pathname.getName().endsWith(".doc");};
        File file = new File("g:/mu");
        File[] files = file.listFiles(fileFilter2);
        for (File file1 : files) {
            System.out.println(file1.getName());
        }

    }

    /**
     * 采用递归思想获取目录及其子目录中的文件
     */
    public static void show(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            // 判断是否为文件
            if (f.isFile()) {
                System.out.println(f.getName());
            }
            // 判断是否为目录
            if (f.isDirectory()) {
                System.out.println("[" + f.getName() + "]");
                show(f);
            }
        }
    }

    /**
     * 多层文件夹的删除
     * @param sPath 文件绝对路径
     * @return 删除结果
     */
    public static boolean deleteDirectory(String sPath) {
        if (!sPath.endsWith(File.separator)) {
            sPath = sPath + File.separator;
        }

        File dirFile = new File(sPath);
        if (!dirFile.exists() || !dirFile.isDirectory()) {
            return false;
        }
        boolean flag = true;
        File[] files = dirFile.listFiles();
        if (files != null) {
            for (File ff : files) {
                if (ff.isFile()) {
                    flag = ff.delete();
                    System.out.println(ff.getName() + "删除成功");
                    if (!flag) {
                        break;
                    }
                } else {
                    flag = deleteDirectory(ff.getAbsolutePath());
                    if (!flag) {
                        break;
                    }
                }
            }
        }

        if (!flag) {
            return false;
        }
        //删除当前目录
        System.out.println(dirFile.getName() + "删除成功");
        return dirFile.delete();
    }

    public static void main(String[] args) {
        // FileTest.test1();
        // FileTest.test2();
        // FileTest.test3();
        // FileTest.test4();
        // FileTest.test5();
        // FileTest.show(new File("g:/mu"));
        // FileTest.deleteDirectory("g:/mu/yan");
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

技术很low的瓜贼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值