一、概述
1、文件和目录路径名的抽象表示形式。
2、File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
二、构造方法
1、File(String parent , String child)
File(String parent , String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。parent:绝对路径,child:文件名。
public class Demo_01 {
public static void main(String[] args) {
File f2 = new File("E:/MeiYong","Hello.txt");
}
}
2、File(String pathname)
File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
public class Demo_01 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/Hello.txt");
}
}
3、File(File parent, String child)
File(File parent, String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
public class Demo_01 {
public static void main(String[] args) {
File file = new File("E:/MeiYong");
File f3 = new File(file,"Hello.txt");
}
}
三、File类的常用功能
1、getAbsolutePath();
getAbsolutePath():方法用来获取某文件的绝对路径
public class Demo_02 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
String absolutePath1 = f1.getAbsolutePath();
System.out.println("文件的绝对路径:"+absolutePath1);
}
}
2、getName();
getName():用来获取文件名称
package com.hp.Test11_File;
import java.io.File;
public class Demo_02 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
String name1 = f1.getName();
System.out.println("文件名称:"+name1);
}
}
3、getParent();
getParent():用来获取父路径
public class Demo_02 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
String parent1 = f1.getParent();
System.out.println("父路径:"+parent1);
}
}
4、length();
length():用来获取文件长度
public class Demo_02 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
long length = f1.length();
System.out.println("文件长度为:"+length);
}
}
5、exists();
exists():用来判断文件是否存在。
public class Test1111 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
boolean exists1 = f1.exists();
System.out.println("该文件是否存在:"+exists1);
}
}
6、isDirectory();
isDirectory():用来判断是否为文件夹。
public class Test1111 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
boolean directory = f1.isDirectory();
System.out.println("该文件是否为文件夹:"+directory);
}
}
7、isFile();
isFile():用来判断是否为文件。
public class Test1111 {
public static void main(String[] args) {
File f1 = new File("E:/MeiYong/asd/Hello.txt");
boolean file = f1.isFile();
System.out.println("该文件是否为文件:"+file);
}
}
8、createNewFile();
createNewFile():用来添加文件。如果文件的前置目录路径不存在,则抛出异常。文件不存在则创建一个空文件,文件存在则不做任何操作。
public class Demo_04 {
public static void main(String[] args) throws IOException {
//File类对象的创建 文件---文件夹
File f1 = new File("D:/aa/bb/b.txt");
f1.createNewFile();
}
}
9、mkdir();
mkdir():用来创建文件夹,该方法要求所有前置目录已经存在,才会创建对应的文件夹。
public class Demo_04 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:/aa/bb/b.txt");
f1.mkdir();
}
}
10、mkdirs();
mkdirs():可以创建多个文件夹,该方法可以自动补全所有父目录,并创建文件夹。
public class Demo_04 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:/aa/bb/b.txt");
f1.mkdirs();
}
}
11、delete();
delete():删除文件或文件夹。删除的文件夹必须为空才可以删除成功,删除的文件可以有内容。
public class Demo_04 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:/aa/bb/b.txt");
f1.delete();
}
}
四、目录的遍历
在File类中我们通常不知道一个文件中包含了多少哥子文件夹,所以for循环使用起来就比较鸡肋了。因此我们可以通过递归的方法来实现目录的遍历。
1、使用for循环遍历
public class Demo_04 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:/aa");
File[] files = f1.listFiles();
System.out.println(Arrays.toString(files));
for (int i = 0; i < files.length; i++) {
File temp = files[i];
File[] files1 = temp.listFiles();
System.out.println(Arrays.toString(files1));
}
}
}
2、使用递归的方法
public class Demo_05 {
public static void main(String[] args) {
File file = new File("D:/aa");
directoryList(file);
}
public static void directoryList(File file) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File temp = files[i];
if (temp.isDirectory()){
System.out.println(temp);
directoryList(temp);
}
}
}
}