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
相关推荐
程序员侠客行9 分钟前
Tomcat 从陌生到熟悉
java·tomcat·web
wertyuytrewm11 分钟前
Java 异常|Java Exceptions
java·开发语言
ProgramHelpOa13 分钟前
Amazon SDE Intern OA 2026 最新复盘|70分钟两题 Medium-Hard
java·前端·javascript
雪碧聊技术20 分钟前
深入理解 Java GC:从“房间清洁工”到解决系统卡顿实战
java·开发语言
大鹏说大话25 分钟前
Java并发编程核心:线程安全、synchronized与volatile的深度剖析
java·开发语言
迷藏49428 分钟前
# 发散创新:低代码开发新范式——用可视化逻辑构建企业级业务系统 在当今快速迭代的软件工程实践
java·python·低代码
JAVA+C语言30 分钟前
Java IO 流
java·开发语言
酉鬼女又兒33 分钟前
零基础快速入门前端CSS Transform 与动画核心知识点及蓝桥杯 Web 应用开发考点解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·css·职场和发展·蓝桥杯·html
山川行36 分钟前
Python快速闯关8:内置函数
java·开发语言·前端·笔记·python·学习·visual studio
charlie11451419137 分钟前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(2) —— HAL 库获取、启动文件坑位与目录搭建
linux·开发语言·c++·stm32·单片机·学习·嵌入式