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
相关推荐
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
小白学大数据3 小时前
Python爬虫开发中的分析与方案制定
开发语言·c++·爬虫·python
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
冰芒猓4 小时前
SpringMVC数据校验、数据格式化处理、国际化设置
开发语言·maven
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
枫叶_v4 小时前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端
wclass-zhengge4 小时前
SpringCloud篇(配置中心 - Nacos)
java·spring·spring cloud
路在脚下@4 小时前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet