Java
File类使用
File对象表示一个路径(D:\\abc.txt), 可以是文件也可以是目录(文件夹)路径.File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,但并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
File类的构造方法
| 构造方法 | 作用 |
|---|---|
File(String pathname) | 通过给定的路径名字符串创建新的File实例。 |
File(String parent, String child) | 通过给定的父路径名字符串和子路径名字符串来创建新的File实例。 |
File(File parent, String child) | 通过给定的父路径实例和子路径名字符串来创建新的File实例。 |
java
import java.io.File;
public class Demo1 {
public static void main(String[] args) {
//相对路径
File f1 = new File("a.txt");
System.out.println(f1);//a.txt
//绝对路径
File f2 = new File("D:\\Java\\JAVA学习\\java_study\\day22-code\\a.txt");
System.out.println(f2);//D:\Java\JAVA学习\java_study\day22-code\a.txt
File f3 = new File("D:\\Java\\JAVA学习\\java_study\\day22-code", "a.txt");
System.out.println(f3);//D:\Java\JAVA学习\java_study\day22-code\a.txt
File f4 = new File("D:\\Java\\JAVA学习\\java_study\\day22-code");
File f5 = new File(f4, "a.txt");
System.out.println(f5);// D:\Java\JAVA学习\java_study\day22-code\a.txt
}
}判断和获取
| 方法 | 作用 |
|---|---|
public boolean isDirectory() | 判断File是否为文件夹(目录) |
public boolean isFile() | 判断File是否为文件 |
public boolean exists() | 判断File文件是否存在 |
public long length() | 返回File表示的文件的长度(字节数量) |
public String getAbsolutePath() | 返回File的绝对路径 |
public String getPath() | 返回定义File对象时使用的路径 |
public String getName() | 返回File文件或目录的名称 |
public long lastModified() | 返回File最后一次被修改的时间(时间毫秒值) |
java
import java.io.File;
public class Demo2 {
public static void main(String[] args) {
File file = new File("day22-code\\a.txt");
//判断File是否为文件夹(目录)
System.out.println(file.isDirectory());// false
//判断File是否为文件
System.out.println(file.isFile());// true
//判断File是否为文件是否存在
System.out.println(file.exists());// true
//a.txt: 111 返回文件的长度
System.out.println(file.length());// 3
// 返回File的绝对路径
System.out.println(file.getAbsolutePath());// D:\Java\JAVA学习\java_study\day22-code\a.txt
// 返回定义`File`对象时使用的路径, 即: File创建对象时, 括号里的内容是啥, 这里就返回啥
System.out.println(file.getPath());// day22-code\a.txt
//返回文件或目录的名称
System.out.println(file.getName());// a.txt
// 返回`File`最后一次被修改的时间(时间毫秒值)
System.out.println(file.lastModified());// 返回时间毫秒值
}
}创建和删除
| 方法 | 作用 |
|---|---|
public boolean createNewFile() | 创建一个空文件 |
public boolean mkdir() | 创建单极文件夹, 如果文件存在返回false |
public boolean mkdirs() | 创建多级文件夹, 如果文件存在返回false |
public boolean delete() | 删除文件或目录, 如果文件或目录不存在, 则返回false, 如果是目录, 则必须为空才能删除, 否则返回false |
java
public class Demo3 {
public static void main(String[] args) throws IOException {
/*
* createNewFile的细节
如果当前路径表示文件不存在, 则创建文件并返回true
如果当前路径表示文件存在, 则返回false
如果父级路径不存在, 那么方法会抛出异常IOException'
* */
// File file1 = new File("day22-code\\bbb\\b.txt");
// 此时bbb文件夹并不存在, 抛出异常IOException
// System.out.println(file1.createNewFile());
//创建单极目录ccc
File file2 = new File("day22-code\\ccc");
System.out.println(file2.mkdir());
//创建多极目录ccc/ddd, 如果使用mkdir则会创建失败
File file3 = new File("day22-code\\ccc\\ddd");
System.out.println(file3.mkdirs());
File file4 = new File("day22-code\\a.txt");
System.out.println(file4.delete());
}
}提示
delete方法只能删除文件和空文件夹,delete方法直接删除不走回收站createNewFile的细节- 如果当前路径表示文件不存在, 则创建文件并返回
true - 如果当前路径表示文件存在, 则返回
false - 如果父级路径不存在, 那么方法会抛出异常
IOException
- 如果当前路径表示文件不存在, 则创建文件并返回
mkdir只能创建单极文件夹, 创建多级会失败返回false;mkdirs即能创建单极又可以创建多极文件夹
获取并遍历
| 方法名称 | 说明 |
|---|---|
public File[] listFiles() | 返回一个File数组, 数组元素为当前路径下的所有子文件和子文件夹(包括隐藏文件) |
public File[] listFiles(FileFilter filter) | 在上述功能下, 添加了过滤功能 |
public String[] list() | 返回一个字符串数组, 数组元素为当前路径下的所有子文件和子文件夹的名称 |
public String[] list(FilenameFilter filter) | 在上述功能下, 添加了过滤功能 |
java
import java.io.File;
import java.util.Arrays;
public class Demo4 {
public static void main(String[] args) {
// aaa\\bbb
File file = new File("day22-code\\aaa");
File[] files = file.listFiles();
System.out.println(Arrays.toString(files));//[day22-code\aaa\bbb]
System.out.println("-----------------------------------");
File file2 = new File("day22-code\\aaa");
String[] list = file2.list();
for (String s : list) {
//最终输出: bbb
System.out.println(s);
}
System.out.println("-----------------------------------");
File file3 = new File("day22-code\\ddd");
String[] list1 = file3.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//过滤白名单的内容
String[] whiteList = {"img", "asset"};
for (String s : whiteList) {
if (s.equals(name)) return false;
}
//返回true, 表示要保留; 否则返回false
return true;
}
});
for (String s : list1) {
//最终输出: bbb
System.out.println(s);
}
}
}提示
- 当调用者FIle表示的路径不存在时, 返回
null - 当调用者FIle表示的路径是文件时, 返回
null - 当调用者File表示的路径是空文件夹时, 返回空数组
- 如果有内容, 会将所以文件和文件夹路径放在File数组中(包括隐藏文件)
- 路径如果有权限问题, 那么
listFiles可能会返回null