Java中的File

认识File

在Java中,File 类是 java.io 包下的一个重要类,它代表了文件和目录路径名的抽象表示形式。File 类可以被用来创建、删除文件,重命名文件,查询文件属性,以及遍历目录树等。但是,值得注意的是,File 类本身并不直接处理文件的读写操作,它仅仅是一个路径名(文件名或目录名)的封装。文件的读写操作需要通过其他流(如 FileInputStreamFileOutputStreamFileReaderFileWriter 等)来完成。

File类的常用构造方法(创建File类的对象)

  • File(String pathname):根据给定的路径名字符串创建新的 File 实例。
  • File(String parent, String child):根据父路径名字符串和子路径名字符串创建新的 File 实例。
  • File(File parent, String child):根据 File 对象表示的父路径名和子路径名字符串创建新的 File 实例。

File常见方法

exists()

  • 功能:判断当前文件对象对应的文件路径是否存在。

  • 返回值 :如果存在,返回true;否则返回false

  • 示例代码

    File file = new File("example.txt");
    boolean fileExists = file.exists();
    if (fileExists) {
    System.out.println("文件存在");
    } else {
    System.out.println("文件不存在");
    }

isFile()

  • 功能:判断当前文件对象指代的是否是文件(而非目录)。

  • 返回值 :如果是文件,返回true;否则返回false

  • 示例代码

    File file = new File("example.txt");
    boolean isFile = file.isFile();
    if (isFile) {
    System.out.println("这是一个文件");
    } else {
    System.out.println("这不是一个文件");
    }

isDirectory()

  • 功能:判断当前文件对象指代的是否是目录(文件夹)。

  • 返回值 :如果是目录,返回true;否则返回false

  • 示例代码

    File dir = new File("docs");
    boolean isDirectory = dir.isDirectory();
    if (isDirectory) {
    System.out.println("这是一个目录");
    } else {
    System.out.println("这不是一个目录");
    }

getPath()

  • 功能:获取创建文件对象时使用的路径。这通常是文件的相对路径,或者如果是用绝对路径创建的,则返回绝对路径。

  • 返回值:文件的路径(String类型)。

  • 示例代码

    File file = new File("/home/user/example.txt");
    String filePath = file.getPath();
    System.out.println("文件路径: " + filePath);

getName()

  • 功能:获取文件的名称(包含后缀)。

  • 返回值:文件的名称(String类型)。

  • 示例代码

    File file = new File("/home/user/example.txt");
    String fileName = file.getName();
    System.out.println("文件名: " + fileName);

length()

  • 功能:获取文件的大小,返回字节个数。

  • 返回值:文件大小(long类型)。

  • 示例代码

    File file = new File("example.txt");
    long fileSize = file.length();
    System.out.println("文件大小: " + fileSize + " 字节");

lastModified()

  • 功能:获取文件的最后修改时间。

  • 返回值:最后修改时间(自1970年1月1日00:00:00 GMT以来的毫秒数,long类型)。

  • 示例代码

    File file = new File("example.txt");
    long lastModifiedTime = file.lastModified();
    System.out.println("最后修改时间: " + new Date(lastModifiedTime));

getAbsolutePath()

  • 功能:获取文件的绝对路径。

  • 返回值:文件的绝对路径(String类型)。

  • 示例代码

    File file = new File("example.txt");
    String absolutePath = file.getAbsolutePath();
    System.out.println("绝对路径: " + absolutePath);

File类创建与删除文件的功能

1. createNewFile()

  • 功能:创建一个新的空文件,当且仅当不存在具有此抽象路径名指定名称的文件时。

  • 返回值 :如果文件被成功创建,则返回 true;如果文件已经存在,则返回 false

  • 示例代码

    File file = new File("newFile.txt");
    boolean isCreated = file.createNewFile();
    if (isCreated) {
    System.out.println("文件创建成功");
    } else {
    System.out.println("文件已存在");
    }

2. mkdir()

  • 功能:创建由此抽象路径名指定的目录。

  • 返回值 :如果目录被成功创建,则返回 true;如果目录已经存在,或者由于某种原因目录不能被创建,则返回 false

  • 注意:只能创建一级目录。

  • 示例代码

    File dir = new File("newDir");
    boolean isCreated = dir.mkdir();
    if (isCreated) {
    System.out.println("目录创建成功");
    } else {
    System.out.println("目录已存在或创建失败");
    }

3. mkdirs()

  • 功能:创建由此抽象路径名指定的目录,包括所有必需但不存在的父目录。

  • 返回值 :如果目录被成功创建,则返回 true;如果目录已经存在,或者由于某种原因目录不能被创建,则返回 false

  • 示例代码

    File dirs = new File("parentDir/childDir");
    boolean isCreated = dirs.mkdirs();
    if (isCreated) {
    System.out.println("多级目录创建成功");
    } else {
    System.out.println("目录已存在或创建失败");
    }

4. delete()

  • 功能:删除由此抽象路径名表示的文件或目录。

  • 返回值 :如果删除成功,则返回 true;如果删除失败,则返回 false

  • 注意:默认只能删除文件和空目录。

  • 示例代码

    File fileToDelete = new File("newFile.txt");
    boolean isDeleted = fileToDelete.delete();
    if (isDeleted) {
    System.out.println("文件删除成功");
    } else {
    System.out.println("文件删除失败");
    }

文件夹的遍历

list() 方法

list()方法用于获取当前目录下所有的"一级文件名称",并将这些名称作为字符串数组返回。如果目录为空,则返回一个长度为0的数组。如果目录不存在或发生I/O错误,则返回null

示例代码:

复制代码
import java.io.File;  
  
public class FileExample {  
    public static void main(String[] args) {  
        File directory = new File("/path/to/your/directory");  
          
        // 获取当前目录下所有文件和文件夹的名称  
        String[] fileNames = directory.list();  
          
        if (fileNames != null) {  
            for (String fileName : fileNames) {  
                System.out.println(fileName);  
            }  
        } else {  
            System.out.println("Directory does not exist or an I/O error occurred.");  
        }  
    }  
}
listFiles() 方法

listFiles()方法用于获取当前目录下所有"一级文件对象"到一个文件对象数组中去返回。与list()方法不同,listFiles()返回的是File对象,而不是字符串名称。这允许你进一步操作这些文件或文件夹,如读取、写入、删除等。

复制代码
import java.io.File;  
  
public class FileExample {  
    public static void main(String[] args) {  
        File directory = new File("/path/to/your/directory");  
          
        // 获取当前目录下所有文件和文件夹的File对象  
        File[] files = directory.listFiles();  
          
        if (files != null) {  
            for (File file : files) {  
                // 这里可以进一步操作file对象,比如打印文件路径  
                System.out.println(file.getPath());  
                  
                // 检查是文件还是文件夹  
                if (file.isDirectory()) {  
                    System.out.println(file.getName() + " is a directory.");  
                } else {  
                    System.out.println(file.getName() + " is a file.");  
                }  
            }  
        } else {  
            System.out.println("Directory does not exist or an I/O error occurred.");  
        }  
    }  
}

注意事项

  • listFiles()方法的主调对象不是一个目录,或者路径不存在时,它会返回null
  • 当主调对象是一个空目录时,listFiles()会返回一个长度为0的数组。
  • listFiles()会返回目录中的所有一级文件和文件夹,包括隐藏文件(如果操作系统允许访问它们)。
  • 如果没有权限访问某个目录,listFiles()同样会返回null
相关推荐
考虑考虑17 小时前
Jpa使用union all
java·spring boot·后端
用户37215742613517 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊18 小时前
Java学习第22天 - 云原生与容器化
java
渣哥20 小时前
原来 Java 里线程安全集合有这么多种
java
间彧20 小时前
Spring Boot集成Spring Security完整指南
java
间彧21 小时前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆1 天前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学1 天前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole1 天前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端