Java教程

57_File类(重点)

本文主要是介绍57_File类(重点),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

File类(重点)

File类(重点)

1. **基本概念**
  • java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息, 如:大小等。对于文件本身内容不能读写。
  1. 常用方法

    方法声明功能描述
    File(String pathname)根据参数指定的路径名来构造对象
    File(String parent, String child)根据参数指定的父路径和子路径信息构造对象,就是把上面的路径拆成了两部分。
    File(File parent, String child)根据参数指定的父抽象路径和子路径信息构造对象,已有一个File类对象,还想创建一个对象,路径相同
    boolean exists()测试此抽象路径名表示的文件或目录是否存在
    String getName()用于获取文件的名称
    long length()返回由此抽象路径名表示的文件的长度,以字节为单位
    long lastModified()用于获取文件的最后一次修改时间,距离1970_01_01的毫秒数
    String getAbsolutePath()用于获取绝对路径信息
    boolean delete()用于删除文件,当删除目录时要求是空目录,如果有多层目录,只能删除最内层的目录
    boolean createNewFile()用于创建新的空文件
    boolean mkdir()用于创建目录,只能创建单层目录
    boolean mkdirs()用于创建多级目录
    File[] listFiles()获取该目录下的所有内容
    boolean isFile()判断是否为文件
    boolean isDirectory()判断是否为目录
    File[] listFiles(FileFilter filter)获取目录下满足筛选器的所有内容
    • 案例题目

      遍历指定目录以及子目录中的所有内容并打印出来

      package com.lagou.module05.task01;
      
      import java.io.File;
      import java.io.FileFilter;
      import java.io.IOException;
      import java.text.SimpleDateFormat;
      import java.time.LocalDateTime;
      import java.util.Date;
      
      // 文件和目录的操作
      public class FileTest {
      
          // 自定义成员方法实现指定目录以及子目录中所有内容的打印
          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 {
      
              // 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()? "文件创建成功": "文件创建失败!");
              }
      
              System.out.println("---------------------------------------------------------");
              // 4.实现目录的删除和创建
              File f2 = new File("d:/捣乱/猜猜我是谁/你猜我猜不猜/死鬼");
              if (f2.exists()) {
                  System.out.println("目录名称是:" + f2.getName());
                  // 要删除多层目录,Java中只能先到最内层,采用递归的方式层层删除。
                  // 使用删除操作要谨慎。
                  System.out.println(f2.delete()? "目录删除成功": "目录删除失败"); // 一次性把文件或目录删掉,而且不过回收站,要恢复都很难
              } else {
                  //System.out.println(f2.mkdir()? "目录创建成功": "目录创建失败");   // 创建单层目录
                  System.out.println(f2.mkdirs()? "目录创建成功": "目录创建失败");   // 创建多层目录
              }
      
              System.out.println("---------------------------------------------------------");
              // 5.实现将指定目录中的所有内容打印出来
              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 + "]");
                  }
              }
      
              System.out.println("---------------------------------------------------------");
              // 6.实现目录中所有内容获取的同时进行过滤
              // 匿名内部类的语法格式:接口/父类类型 引用变量名 = new 接口/父类类型() { 方法的重写 };
              /*FileFilter fileFilter = new FileFilter() {
                  @Override
                  public boolean accept(File pathname) {
                      // 若文件名是以.avi为结尾,则返回true表示保留   否则返回false就是表示丢弃
                      return pathname.getName().endsWith(".avi");
                  }
              };*/
              // Lambda表达式的格式:(参数列表) -> {方法体}
              FileFilter fileFilter = (File pathname) -> {return pathname.getName().endsWith(".avi");};
              File[] filesArray2 = f3.listFiles(fileFilter);
              for (File tf : filesArray2) {
                  System.out.println(tf);
              }
      
              System.out.println("---------------------------------------------------------");
              // 7.使用递归的思想获取目录以及子目录中的内容
              show(new File("d:/捣乱"));
          }
      }
      
      

在这里插入图片描述

这篇关于57_File类(重点)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!