前奏---File类

  • Java中的File类(位于java.io包)是一种对系统文件抽象化的类,注意目录也可以是一个File实例;
  • 用户通过创建一个File实例,从此这个对象在这个Java程序就代表了这个文件本身;
  • File实例对象允许你对这个文件(或者目录)进行一些外部属性的查看和检查,比如:创建、删除文件/目录;检查文件是否存在、获取大小、最后修改时间等;列出目录中的文件和子目录;检查读写权限、设置文件为只读等。
  • 但注意,File对象实例不能对文件内部文字进行编辑,不涉及文件内容的读写,只是对文件本身的属性进行查看

一、File类的构造方法

首先重要的是如何创建一个File对象实例,File类的构造方法非常的简单,虽然主要有两种形态(传一个参的和传两个参的),但完全符合正常的逻辑,大同小异:

1. 通过一个路径字符串构造
// 传入一个系统的路径,可以是文件或者目录,随便
File file = new File("D:/test/test.txt");
2. 通过两个路径字符串构造
// 方式1:传入两个字符串参数
File file1 = new File("D:/test", "test.txt");

// 方式2:File对象和字符串参数
File parentDir = new File("D:/test");
File file2 = new File(parentDir, "test.txt");

注意:传入的路径也可以是相对路径;传入的路径也可以不存在,因为我们有相应创建文件的方法,参考下面的章节的方法演示;

二、File类的两个静态变量

在Java中,File类提供了两个重要的静态变量,用于处理与不同系统的文件路径分隔符和路径列表分隔符:

1. File.separator
  • 作用:表示系统的默认名称分隔符,用于分隔文件路径中的目录或文件名。例如,Windows系统使用反斜杠(\),而Linux系统使用正斜杠(/)。
  • 类型String
  • 使用场景:构建跨平台的文件路径时,避免硬编码分隔符。例如:
String separator=File.separator;
String path = "dir1" + separator + "dir2" + separator + "file.txt";
// 结果是:dir1\dir2\file.txt

2. File.pathSeparator

  • 作用:表示系统的路径的分隔符,用于分隔多个路径字符串;例如,Windows系统使用分号(;),而Unix/Linux系统使用冒号(:)。
  • 类型String
  • 使用场景:拼接多个路径时,确保跨平台兼容性。例如:
String paths = "path1" + File.pathSeparator + "path2";

三、File对象的方法

用的时候查就可以了,只有你想不到没有它办不到,面面俱到;

方法

说明

exists()

检查文件/目录是否存在

isFile()

是否为文件

isDirectory()

是否为目录

length()

获取文件大小(字节)

getPath()

获取完整路径

getName()

获取文件名(window系统下文明名称包含后缀即使后缀被隐藏)

mkdir() / mkdirs()

创建单级目录 / 创建多级目录

createNewFile()

创建新文件

delete()

删除文件或空目录

list() / listFiles()

获取目录下的文件名数组 / 获取File对象数组


File file = new File("test.txt");

// 检查文件/目录是否存在
boolean exists = file.exists(); 

// 判断是否是文件
boolean isFile = file.isFile();

// 判断是否是目录
boolean isDir = file.isDirectory();

// 判断是否是隐藏文件
boolean isHidden = file.isHidden();

// 判断是否是绝对路径
boolean isAbsolute = file.isAbsolute();

File file = new File("src/test.txt");

// 获取文件名/目录名
String name = file.getName(); // 返回"test.txt"

// 获取父目录路径字符串
String parent = file.getParent(); // 返回"src"

// 获取父目录File对象
File parentFile = file.getParentFile();

// 获取相对路径
String path = file.getPath(); // 返回"src/test.txt"

// 获取绝对路径
String absPath = file.getAbsolutePath(); // 返回完整路径

// 获取规范路径(解析"."和"..")
String canonicalPath = file.getCanonicalPath();

File file = new File("newfile.txt");
boolean created = file.createNewFile(); // 创建新文件,当且仅当该文件不存在时创建成功

// 创建单级目录,当且仅当该文件不存在时创建成功
File dir1 = new File("newDir");
boolean success1 = dir1.mkdir();

// 创建多级目录,当且仅当该文件不存在时创建成功
File dir2 = new File("parent/child/grandchild");
boolean success2 = dir2.mkdirs();
// mkdir()只能创建单级目录,父目录必须存在;mkdirs()会创建所有不存在的父目录

File file = new File("fileToDelete.txt");
boolean deleted = file.delete(); 
// 删除文件或空目录;delete()只能删除空目录或文件,要删除非空目录需要递归删除所有子项

// 程序退出时删除
file.deleteOnExit();

遍历目录内容,这个还是很重要的;

File dir = new File("D:/test");

// 获取目录下所有文件和子目录名称
String[] list = file.list();
// 使用增强for遍历也行,就是一个普通的列表,没啥特殊的;
for (int i = 0; i < list.length; i++) {
    System.out.println(list[i]);
}

// 获取目录下所有文件和子目录File对象
File[] files = dir.listFiles();

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值