欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 【Java】File 类

【Java】File 类

2025/2/24 1:17:07 来源:https://blog.csdn.net/m0_72516377/article/details/145802547  浏览:    关键词:【Java】File 类

目录

  • File 类
    • File 类构造方法
    • 常见成员方法
      • 判断与获取
      • 创建与删除
      • 获取并遍历

File 类

  • File 对象表示一个路径,可以是文件的路径,也可以是文件夹的路径

  • 这个路径可以是存在的,也允许是不存在的

  • 绝对路径和相对路径的区别:

    • 绝对路径是指从根目录开始描述文件或目录位置的完整路径。无论你在系统中的哪个位置,使用绝对路径都能准确定位到目标资源。例如,在Windows操作系统中,C:\Users\username\Documents\example.txt 就是一个绝对路径;而在Linux或macOS系统中, /home/username/Documents/example.txt 则表示同样的含义。

    • 相对路径则是相对于当前工作目录的位置来描述文件或目录的路径。它不包含盘符(如 C:),也不一定从根目录开始。其有效性依赖于你所在的当前位置。比如如果你现在位于 D:\Projects 文件夹下,那么你可以用 .\myproject\src\main.cpp 来指代同级目录下的某个项目源码文件。

    • 简单来说:

      • 绝对路径总是能够唯一标识出一个具体的文件或文件夹,并且不会因为环境变化而改变;

      • 相对路径更短小精悍,但需要结合上下文理解,并随所在位置的不同会有差异。

File 类构造方法

  • public File(String pathname) 根据文件路径创建文件对象
  • public File(String parent,String child) 根据父路径名字符串和子路径名字符串创建文件对象(拼接)
  • public File(File parent,String child) 根据父路径对应文件对象和子路径名字符串创建文件对象(拼接)
import java.io.File;public class FileDemo {public static void main(String[] args) {// 根据文件路径创建文件对象String str = "C:\\Users\\abcd\\Desktop\\输入输出.md";File f1 = new File(str);System.out.println(f1);// 根据父路径名字符串和子路径名字符串创建文件对象String parent = "C:\\Users\\abcd\\Desktop";String child = "输入输出.md";File f2 = new File(parent,child);System.out.println(f2);// 根据父路径对应文件对象和子路径名字符串创建文件对象File parent2 = new File("C:\\Users\\abcd\\Desktop");String child2 = "输入输出.md";File f3 = new File(parent2,child2);System.out.println(f3);}
}

常见成员方法

判断与获取

  • public boolean isDirectory() 判断此路径名表示的 File 是否为文件夹
  • public boolean isFile() 判断此路径名的 File 是否为文件
  • public boolean exists() 判断此路径名表示的 File 是否存在
  • public long length() 返回文件的大小(字节数量)
  • public String getAbsolutePath() 返回文件的绝对路径
  • public String getPath() 返回定义文件时使用的路径
  • public String getName() 返回文件的名称,带后缀
  • public long lastModified() 返回文件的最后修改时间(时间毫秒值)
import java.io.File;public class FileOperations {public static void main(String[] args) {// 创建一个File对象,这里以项目根目录下的test.txt文件为例,可按需修改路径File file = new File("C:\\Users\\abcd\\Desktop\\输入输出.md");// 判断是否为文件夹boolean isDirectory = file.isDirectory();System.out.println("Is directory: " + isDirectory);// 判断是否为文件boolean isFile = file.isFile();System.out.println("Is file: " + isFile);// 判断是否存在boolean exists = file.exists();System.out.println("Exists: " + exists);// 获取文件大小(字节数),如果是文件夹此方法返回0long length = file.length();System.out.println("File size (bytes): " + length);// 获取绝对路径String absolutePath = file.getAbsolutePath();System.out.println("Absolute path: " + absolutePath);// 获取定义文件时使用的路径String path = file.getPath();System.out.println("Defined path: " + path);// 获取文件名称,带后缀String name = file.getName();System.out.println("File name: " + name);// 获取文件的最后修改时间(时间毫秒值)long lastModified = file.lastModified();System.out.println("Last modified time (milliseconds): " + lastModified);}
}

输出结果如下:

Is directory: false
Is file: true
Exists: true
File size (bytes): 4496
Absolute path: C:\Users\abcd\Desktop\输入输出.md
Defined path: C:\Users\abcd\Desktop\输入输出.md
File name: 输入输出.md
Last modified time (milliseconds): 1740232832244

创建与删除

  • public boolean createNewFile() 创建一个新的空的文件

  • public boolean mkdir() 创建单级文件夹

  • public boolean mkdirs 创建多级文件夹

  • public boolean delete() 删除文件、空文件夹(直接删除、不进入回收站)

import java.io.File;
import java.io.IOException;public class FileCreateAndDeleteExample {public static void main(String[] args) {// 示例路径,可根据实际情况修改String filePath = "test.txt";String singleDirPath = "singleDir";String multiDirPath = "parentDir\\childDir";// 创建新文件File file = new File(filePath);try {if (file.createNewFile()) {System.out.println("文件 " + filePath + " 创建成功");} else {System.out.println("文件 " + filePath + " 已存在");}} catch (IOException e) {System.out.println("创建文件时出错: " + e.getMessage());}// 创建单级文件夹File singleDir = new File(singleDirPath);if (singleDir.mkdir()) {System.out.println("单级文件夹 " + singleDirPath + " 创建成功");} else {System.out.println("单级文件夹 " + singleDirPath + " 创建失败或已存在");}// 创建多级文件夹File multiDir = new File(multiDirPath);if (multiDir.mkdirs()) {System.out.println("多级文件夹 " + multiDirPath + " 创建成功");} else {System.out.println("多级文件夹 " + multiDirPath + " 创建失败或已存在");}// 删除文件if (file.delete()) {System.out.println("文件 " + filePath + " 删除成功");} else {System.out.println("文件 " + filePath + " 删除失败");}// 删除单级文件夹,注意:文件夹必须为空才能删除成功if (singleDir.delete()) {System.out.println("单级文件夹 " + singleDirPath + " 删除成功");} else {System.out.println("单级文件夹 " + singleDirPath + " 删除失败");}// 删除多级文件夹,同样要求各级文件夹为空if (multiDir.delete()) {System.out.println("多级文件夹 " + multiDirPath + " 删除成功");} else {System.out.println("多级文件夹 " + multiDirPath + " 删除失败");}}
}

注意事项

  • createNewFile():
    • 如果当前路径表示的文件原本是不存在的,则创建成功并返回 true
    • 如果当前路径表示的文件原本是存在的,则创建失败并返回 false
    • 如果父路径是不存在的,那么方法会有 IOException 异常
    • 创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
  • mkdir():Windows 当中路径是唯一的,如果当前路径已经存在,则创建失败并返回 false
  • mkdir():既可以创建单级文件夹,又可以创建多级文件夹
  • delete():
    • 如果删除的是文件,直接删除,不进入回收站
    • 如果删除的是空文件夹,直接删除,不进入回收站
    • 如果删除的是有内容的文件夹,则删除失败

获取并遍历

  • public File[] listFiles() 获取当前该路径下所有内容
import java.io.File;public class ListFilesExample {public static void main(String[] args) {// 指定要遍历的目录路径,可以根据需要修改File directory = new File("MyFiles");// 检查该 File 对象是否代表一个目录if (directory.isDirectory()) {// 调用 listFiles() 方法获取目录下的所有文件和子目录File[] files = directory.listFiles();// 检查返回的数组是否为空if (files != null) {// 遍历数组并输出每个文件或目录的名称for (File file : files) {if (file.isDirectory()) {System.out.println("目录: " + file.getName());} else {System.out.println("文件: " + file.getName());}}} else {System.out.println("无法获取目录内容,可能发生 I/O 错误。");}} else {System.out.println("指定的路径不是一个目录。");}}
}

注意事项

  • 当调用者 File 表示的路径不存在时,返回 null
  • 当调用者 File 表示的路径是文件时,返回 null
  • 当调用者 File 表示的路径是一个空文件夹时,返回一个长度为 0 的数组
  • 当调用者 File 表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在 File 数组中返回
  • 当调用者 File 表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在 File 数组中返回,包含隐藏文件
  • 当调用者 File 表示的路径是需要权限才能访问的文件夹时,返回 null

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词