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
相关推荐
caimouse14 分钟前
Reactos 第 4 章 对象管理 — 4.8 系统调用 NtDuplicateObject / 4.9 系统调用 NtClose
开发语言·windows·架构
写代码写到手抽筋7 小时前
5G上行DCI字段判定:端口 流数 PMI选择详解
java·算法·5g
xieliyu.8 小时前
Java算法精讲:双指针(二)
java·开发语言·算法
jeffer_liu8 小时前
Spring AI 生产级实战:裁判员
java·人工智能·后端·spring·大模型
何以解忧,唯有..8 小时前
Python包管理工具pip:从入门到精通
开发语言·python·pip
雪的季节8 小时前
RabbitMQ详解
开发语言
小bo波9 小时前
枚举实战
java·设计模式·枚举·后端开发·代码重构
ice8130331819 小时前
【Python】Matplotlib折线图绘制
开发语言·python·matplotlib
夜微凉49 小时前
三、Spring
java·后端·spring