小白学JAVA之二十——File类

小白学JAVA之二十——File类

一. File类

1.1 基本概念

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

1.2 常用方法

在这里插入图片描述

  • 案例一:
  • 打印该目录下文件(d:/a.txt)的基本信息,并删除该文件。如果文件不存在则创建该文件。
		// 1.构造File类型的对象与d:/a.txt文件关联
        File f1 = new File("d:/a.txt");
        // 2.若文件存在则获取文件的相关特征信息并打印后删除文件
        if (f1.exists()) {
            System.out.println("文件的名称是:" + f1.getName());
            System.out.println("文件的大小是:" + f1.length());
            Date d1 = new Date(f1.lastModified());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("文件的最后一次修改时间:" + sdf.format(d1));
            // 绝对路径: 主要指以根目录开始的路径信息,如:c:/  d:/   /..
            // 相对路径: 主要指以当前目录所在位置开始的路径信息,如:./  ../   相对路径
            System.out.println("文件的绝对路径信息是:" + f1.getAbsolutePath());
            System.out.println(f1.delete()? "文件删除成功": "文件删除失败");
        } else {
            // 3.若文件不存在则创建新的空文件
            System.out.println(f1.createNewFile()? "文件创建成功": "文件创建失败!");
        }
  • 案例二:
  • 实现目录的删除和创建。
		File f1 = new File("d:/捣乱");
		File f2 = new File("d:/捣乱/猜猜我是谁/你猜我猜不猜/死鬼");
        if (f1.exists()) {
            System.out.println("目录名称是:" + f1.getName());
            System.out.println(f1.delete()? "目录删除成功": "目录删除失败");   
        } else {
            System.out.println(f1.mkdir()? "目录创建成功": "目录创建失败");   // 创建单层目录
            System.out.println(f2.mkdirs()? "目录创建成功": "目录创建失败");   // 创建多层目录
        }
  • 案例三:
  • 实现将指定目录中的所有内容打印出来,如果是文件则直接打印文件名称,如果是目录则使用[]将目录名称括起来。
//方法一:先获取该目录下的所有内容并保存到数组中,然后遍历数组通过getName函数打印文件名称
		File f3 = new File("d:/捣乱");
        // 获取目录f3下的所有内容并记录到一维数组中
        File[] filesArray = f3.listFiles();
        // 遍历数组
        for (File tf: filesArray) {
            String name = tf.getName();
            // 判断是否为文件,若是则直接打印文件名称
            if (tf.isFile()) {
                System.out.println(name);
            }
            // 若是目录,则使用[]将目录名称括起来
            if (tf.isDirectory()) {
                System.out.println("[" + name + "]");
            }
        }
// 方法二::
//自定义show()成员方法实现指定目录以及子目录中所有内容的打印
//Main中调用show()
	// 1.自定义成员方法实现指定目录以及子目录中所有内容的打印
	public static void show(File file) {
        // 获取目录f3下的所有内容并记录到一维数组中
        File[] filesArray = file.listFiles();
        // 遍历数组
        for (File tf: filesArray) {
            String name = tf.getName();
            // 判断是否为文件,若是则直接打印文件名称
            if (tf.isFile()) {
                System.out.println(name);
            }
            // 若是目录,则使用[]将目录名称括起来
            if (tf.isDirectory()) {
                System.out.println("[" + name + "]");
                show(tf);
            }
        }
 public static void main(String[] args) throws IOException {
        show(new File("d:/捣乱"));
 }
  • 案例四:
  • 实现目录中所有内容获取的同时进行过滤:只获取目录中文件名是以.avi为结尾的文件。(使用FileFilter过滤器和listFile方法)
// 方法一:匿名内部类的语法格式:接口/父类类型 引用变量名 = new 接口/父类类型() { 方法的重写 };
//通过重写过滤器的accept方法实现筛选
        FileFilter fileFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                // 若文件名是以.avi为结尾,则返回true表示保留   否则返回false就是表示丢弃
                return pathname.getName().endsWith(".avi");
            }
        };
        File[] filesArray2 = f3.listFiles(fileFilter);
        //打印筛选后的文件数组结果
        for (File tf : filesArray2) {
            System.out.println(tf);
        }
// 方法二:原理同方法一,使用Lambda表达式的格式:(参数列表) -> {方法体}
        FileFilter fileFilter = (File pathname) -> {return pathname.getName().endsWith(".avi");};
         File[] filesArray2 = f3.listFiles(fileFilter);
        //打印筛选后的文件数组结果
        for (File tf : filesArray2) {
            System.out.println(tf);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值