01 File概述、API
一、File类概述
● File类在包java.io.File下、代表操作系统的文件对象(文件、文件夹)。
● File类提供了诸如:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能。
File类创建对象
方法名称 | 说明 |
public File (String pathname) | 根据文件路径创建文件对象 |
public File (String parent, String child) | 从父路径名字符串和子路径名字符串创建文件对象 |
public File (File parent, String child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
● File对象可以定位文件和文件夹
● File封装的对象仅仅是一个路径名,这个路径可以是存在的
绝对路径和相对路径
绝对路径:从盘符开始
File file1 = new File(“D:\\itheima\\a.txt”);
相对路径:不带盘符,默认直接到当前工程下的目录寻找文件
File file3 = new File(“模块名\\a.txt”);
【代码示例】
//目标:学会创建File对象定位操作系统的文件(文件 文件夹的)
public class Fileemo {
public static void main(String[] args) {
// 1、创建File对象(指定了文件的路径)
// 路径写法: D:\resources\xueshan.jpeg
// D:/resources/xueshan.jpeg
// File.separator
// File f = new File("D:\\resources\\xueshan.jpeg");
// File f = new File("D:/resources/xueshan.jpeg");
File f = new File("D:" + File.separator+"resources"+ File.separator +"xueshan.jpeg");
long size = f.length(); // 是文件的字节大小
System.out.println(size);
// 2、File创建对象,支持绝对路径 支持相对路径(重点)
File f1 = new File("D:\\resources\\beauty.jpeg"); // 绝对路径
System.out.println(f1.length());
// 相对路径:一般定位模块中的文件的。 相对到工程下!!
File f2 = new File("file-io-app/src/data.txt");
System.out.println(f2.length());
// 3、File创建对象 ,可以是文件也可以是文件夹
File f3 = new File("D:\\resources");
System.out.println(f3.exists()); // 判断这个路径是否存在,这个文件夹存在否
}
}
运行结果:
38490
46824
6
true
二、FIle类的常见API
1.判断文件类型、获取文件信息
File类的判断文件类型、 获取文件信息功能
方法名称 | 说明 |
public boolean isDirectory( ) | 测试此抽象路径名表示的File是否为文件夹 |
public boolean isFile( ) | 测试此抽象路径名表示的File是否为文件 |
public boolean exists( ) | 测试此抽象路径名表示的File是否存在 |
public String getAbsolutePath( ) | 返回此抽象路径名的绝对路径名字符串 |
public String getPath( ) | 将此抽象路径名转换为路径名字符串 |
public String getName( ) | 返回由此抽象路径名表示的文件或文件夹的名称 |
public long lastModified( ) | 返回文件最后修改的时间毫秒值 |
【代码示例】绝对路径 相对路径
public class FileDemo02 {
public static void main(String[] args) {
// 1.绝对路径创建一个文件对象
File f1 = new File("D:/resources/xueshan.jpeg");
// a.获取它的绝对路径。
System.out.println(f1.getAbsolutePath());
// b.获取文件定义的时候使用的路径。
System.out.println(f1.getPath());
// c.获取文件的名称:带后缀。
System.out.println(f1.getName());
// d.获取文件的大小:字节个数。
System.out.println(f1.length()); // 字节大小
// e.获取文件的最后修改时间
long time = f1.lastModified();
System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));
// f、判断文件是文件还是文件夹
System.out.println(f1.isFile()); // true
System.out.println(f1.isDirectory()); // false
System.out.println("-------------------------");
File f2 = new File("file-io-app\\src\\data.txt");
// a.获取它的绝对路径。
System.out.println(f2.getAbsolutePath());
// b.获取文件定义的时候使用的路径。
System.out.println(f2.getPath());
// c.获取文件的名称:带后缀。
System.out.println(f2.getName());
// d.获取文件的大小:字节个数。
System.out.println(f2.length()); // 字节大小
// e.获取文件的最后修改时间
long time1 = f2.lastModified();
System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time1));
// f、判断文件是文件还是文件夹
System.out.println(f2.isFile()); // true
System.out.println(f2.isDirectory()); // false
System.out.println(f2.exists()); // true
File file = new File("D:/");
System.out.println(file.isFile()); // false
System.out.println(file.isDirectory()); // true
System.out.println(file.exists()); // true
File file1 = new File("D:/aaa");
System.out.println(file1.isFile()); // false
System.out.println(file1.isDirectory()); // false
System.out.println(file1.exists()); // false
}
}
运行结果:
D:\resources\xueshan.jpeg
D:\resources\xueshan.jpeg
xueshan.jpeg
38490
最后修改时间:2021/12/01 20:42:52
true
false
-------------------------
D:\develop\Code\基础语法\file-io-app\src\data.txt
file-io-app\src\data.txt
data.txt
6
最后修改时间:1970/01/01 08:00:00
true
false
true
false
true
true
false
false
false
2.创建文件删除文件功能
File类创建文件的功能
方法名称 | 说明 |
public boolean createNewFile( ) | 创建一个新的空的文件 |
public boolean mkdir( ) | 只能创建一级文件夹 |
public boolean mkdirs( ) | 可以创建多级文件夹 |
File类删除文件的功能
方法名称 | 说明 |
public boolean delete?() | 删除由此抽象路径名表示的文件或空文件夹 |
delete方法默认只能删除文件和空文件夹。
delete方法直接删除不走回收站 。(占用时,也可以删除)
【代码示例】
public class FileDemo03 {
public static void main(String[] args) throws IOException {
File f = new File("file-io-app\\src\\data.txt");
// a.创建新文件,创建成功返回true ,反之 ,不需要这个,以后文件写出去的时候都会自动创建
System.out.println(f.createNewFile());
File f1 = new File("file-io-app\\src\\data02.txt");
System.out.println(f1.createNewFile()); // (几乎不用的,因为以后文件都是自动创建的!)
// b.mkdir创建一级目录
File f2 = new File("D:/resources/aaa");
System.out.println(f2.mkdir());
// c.mkdirs创建多级目录(重点)
File f3 = new File("D:/resources/ccc/ddd/eee/ffff");
// System.out.println(f3.mkdir());
System.out.println(f3.mkdirs()); // 支持多级创建
// d.删除文件或者空文件夹
System.out.println(f1.delete());
File f4 = new File("D:/resources/xueshan.jpeg");
System.out.println(f4.delete()); // 占用一样可以删除
// 只能删除空文件夹,不能删除非空文件夹.
File f5 = new File("D:/resources/aaa");
System.out.println(f5.delete());
}
}
3.遍历文件夹
File类的遍历功能
方法名称 | 说明 |
public String[ ] list( ) | 获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。 |
public File[ ] listFiles( )(常用) | 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回( 重点) |
ListFiles方法注意事项:
当调用者不存在时,返回null
当调用者是一个文件时,返回null
当调用者是一个空文件时,返回一个长度为0的数组
当调用者是一个有非空文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容
当调用者时一个需要权限才能进入的文件夹时,返回null
【代码示例】
文件夹图样:
/**
目标:File针对目录的遍历
- public String[] list():
获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
- public File[] listFiles()(常用):
获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
*/
public class FileDemo04 {
public static void main(String[] args) {
// 1、定位一个目录
File f1 = new File("D:/resources");
String[] names = f1.list();
for (String name : names) {
System.out.println(name);
}
// 2.一级文件对象
// 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
File[] files = f1.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
// 注意事项
File dir = new File("D:/resources/ddd");
File[] files1 = dir.listFiles();
System.out.println(Arrays.toString(files1));
}
}
运行结果:
aaa
bbb
beauty.jpeg
caoyuan.jpeg
data.txt
xingkong.jpeg
xueshan.jpeg
yezi.jpeg
---------------------
D:\resources\aaa
D:\resources\bbb
D:\resources\beauty.jpeg
D:\resources\caoyuan.jpeg
D:\resources\data.txt
D:\resources\xingkong.jpeg
D:\resources\xueshan.jpeg
D:\resources\yezi.jpeg
null