概述
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
构造方法
-
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 -
public File(String parent, String child)
:从父路径名字符串和子路径名字符串船舰新的File实例。 -
public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的File实例。 - 构造举例,代码如下:
// 文件路径名
String pathname1 = "D:\\aaa.txt";
File file1 = new File(pathname);
// 文件路径名
String pathname2 = "D:\\aaa\\bbb.txt";
File file2 = new File(pathname2);
绝对路径和相对路径
绝对路径:是一个完成的路径,以盘符(c:, D:)开始的路径
D:\maven\apache-maven-3.8.1\boot\plexus-classworlds.license
、D:\Nginx\nginx-1.20.1\nginx-1.20.1\contrib\vim\ftplugin\nginx.vim
相对路径:是一个简化路径
D:\maven\apache-maven-3.8.1\boot\plexus-classworlds.license
-->简化为:plexus-classworlds.license(可以省略项目的根目录)
注意:
- 路径不区分大小写
- 路径中的文件名称分隔符windows使用分斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的斜杠
常用方法
获取功能的方法
-
public String getAbsolutePath()
:返回此File的绝对路径名字字符串。 -
public String getPath()
:将此File转换为路径名字符串。 -
public String getName()
:返回由此File表示的文件或目录的名称。 -
public long length()
:返回由此File表示的文件的长度。
方法演示:代码如下:
import java.io.File;
public class Demo02File {
public static void main(String[] args) {
File file1 = new File("d:/aaa/bbb.java");
ystem.out.println("文件绝对路径" + file1.getAbsolutePath());
System.out.println("文件构造路径" + file1.getPath());
System.out.println("文件名称" + file1.getName());
/*注意:
* 文件夹是没有大小概念的,不能获取文件夹的大小
* 如果构造放啊中给出的路径不存在,那么length方法返回0*/
System.out.println("文件长度" + file1.length() + "字节");
File file2 = new File("d:/aaa");
System.out.println("文件绝对路径" + file2.getAbsolutePath());
System.out.println("文件构造路径" + file2.getPath());
System.out.println("文件名称" + file2.getName());
System.out.println("文件长度" + file2.length());
}
}
输出结果:
文件绝对路径d:\aaa\bbb.java
文件构造路径d:\aaa\bbb.java
文件名称bbb.java
文件长度0字节
文件绝对路径d:\aaa
文件构造路径d:\aaa
文件名称aaa
文件长度0
判断功能的方法
-
public boolean exists()
:此File表示的文件或目录是否实际存在。 -
public boolean isDirectory()
:此File表示的是否为目录 -
public boolean idFile()
:此File表示的是否为文件
方法演示,代码如下:
import java.io.File;
public class Demo03File {
public static void main(String[] args) {
File file = new File("d:\\aaa\\bbb.java");
File file1 = new File("d:\\aaa");
// 判断是否存在
System.out.println("d:\\aaa\\bbb.java是否存在:" + file.exists());
System.out.println("d:\\aaa是否存在:" + file1.exists());
// 判断是文件还是目录
System.out.println("d:\\aaa 文件?:" + file1.isFile());
System.out.println("d:\\aaa 目录?:" + file1.isDirectory());
}
}
输出结果:
d:\aaa\bbb.java是否存在:false
d:\aaa是否存在:false
d:\aaa 文件?:false
d:\aaa 目录?:false
创建删除功能的方法
-
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 -
public boolean delete()
:删除由此File表示的文件或目录 -
public boolean mkdir()
:创建由此File表示的目录 -
public boolean mkfirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录
方法演示,代码如下:
import java.io.File;
import java.io.IOException;
public class Demo04File {
public static void main(String[] args) throws IOException {
show01();
show02();
show03();
}
/*public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
* 创建文件的路径和名称在构造方法中给出(构造方法的参数)
* 返回值:布尔值
* true:文件不存在,创建文件,返回true
* false:文件存在,不会创建,返回false
* 注意:
* 1、此方法只能创建文件,不能创建文件夹
* 2、创建文件的路径必须存在,否则会抛出异常
* createNewFile声明抛出了IOException,我们调用这个方法就必须处理这个异常,要么throws,要么try*/
private static void show01() throws IOException {
File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\1.txt");
boolean newFile = file.createNewFile();
System.out.println("newFile:" + newFile);
File file1 = new File("demo01File\\2.txt");
System.out.println(file1.createNewFile());
File file2 = new File("demo01File\\新建文件夹");
System.out.println(file2.createNewFile());
File file3 = new File("demo01Fil\\新建文件夹");
System.out.println(file3.createNewFile());
}
/*public boolean mkdir():创建单级空文件夹
* public boolean mkdirs():既可以创建单级空文件夹,也可以创建多级空文件夹
* 创建空文件夹的路径和名称在构造方法中给出(构造方法的参数)
* 返回值:布尔值
* true:文件夹不存在,创建文件夹,返回true
* false:文件夹存在,不会创建,返回false
* 注意:
* 1、此方法只能创建文件夹,不能创建文件*/
private static void show02() {
// 创建单级空文件夹
File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\aaa");
System.out.println(file.mkdir());
// 创建多级空文件夹
File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\bbb\\ccc\\ddd");
System.out.println(file1.mkdirs());
// 看类型不看名称
System.out.println(new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\abs.txt").mkdir());
// 路径不存在 不抛异常 不会创建
System.out.println(new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01Fi\\ccc.txt").mkdir());
}
/*public boolean delete():删除由此File表示的文件或目录。
* 此方法,可以删除构造方法路径中给出的文件/文件夹
* 返回值:布尔值
* true:文件/文件夹删除成功
* false:文件夹中有内容,不会删除;构造方法中路径不存在
* 注意:delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎*/
private static void show03() {
// 删除文件
File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\1.txt");
System.out.println(file.delete());
// 删除文件夹
File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\aaa");
System.out.println(file1.delete());
// 文件夹中有内容
File file2 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\bbb\\ccc\\ddd");
System.out.println(file2.delete());
// 路径不存在
File file3 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\b");
System.out.println(file3.delete());
}
}
目录的遍历
-
public String[] list[]
:返回一个String数组,表示该File目录中的所有子文件或目录。 -
public File[] listFiles
:返回一个File数组,表示该File目录中的所有子文件或目录
import java.io.File;
public class Demo05File {
public static void main(String[] args) {
show02();
show01();
}
/*public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录
* 遍历构造方法中给出的目录,会获取目录中所有文件/文件夹的名称,把获取到的多个名称储存到一个String类型的数组中*/
private static void show01() {
// 遍历文件夹 隐藏的文件/文件夹也能被遍历
File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File");
String[] list = file.list();
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
// 遍历文件 抛空指针异常
File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\Demo01File.java");
String[] list1 = file1.list();
for (int i = 0; i < list1.length; i++) {
System.out.println(list1[i]); // NullPointerException
}
}
/*public File[] listFiles():返回一个File数组,表示该File目录中的所有子文件或目录*/
private static void show02() {
// 遍历文件夹 隐藏的文件/文件夹也能被遍历
File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
}
}
注意:
list方法和listFiles方法遍历的是构造方法中给出的目录
如果构造方法中给出的目录的路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
网友评论