File类
1.概述
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
statiic String pathSeparator
与系统有关的路径分隔符。为了方便,它被表示为一个字符串。
static String separator
与系统有关的默认名称分隔符。为了方便,它被表示为一个字符串。
操作路径:
C:\develop\a\a.txt windows系统
C:/develop/a/a.txt Linux系统
推荐:“C:” + File.separator + “develop” + File.separator + “a” + File.separator + “a.txt”
路径
绝对路径:一个完整的路径
以盘符开始的路径
C:\a.txt
相对路径:一个简化的路径
相对指的是显贵与当前项目的根目录(C:\Users\itcast\IdeaProjects\shuangyuan)
如果使用当前项目的根目录,路径可以简化书写
C:\Users\itcast\IdeaProjects\shuangyuan\abc.txt ==> abc.txt
注意:
- 路径是不区分大小写的
- 路径中的文件名称分隔符windows使用反斜杠"",反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠
2. 构造方法
- File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。
private static void show01() {
File f1 = new File("D:\\downloads");
System.out.println(f1);
File f2 = new File("D:\\downloads\\a.txt");
System.out.println(f2);
File f3 = new File("a.txt");
System.out.println(f3);
}
- File(String parent,String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新File实例。
private static void show02(String parent, String child) {
File file = new File(parent,child);
System.out.println(file);
}
- File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新File实例。
private static void show03() {
File parent = new File("C:\\");
File file = new File(parent, "a.txt");
System.out.println(file);
}
3. 常用方法
获取功能的方法
public String getAbsolutePath()
:返回此File的绝对路径名字符串。
private static void show01() {
File f1 = new File("H:\\IdeaProjects\\LearnDemo\\a.txt");
String absolutePath1 = f1.getAbsolutePath();
System.out.println(absolutePath1); //H:\IdeaProjects\LearnDemo\a.txt
File f2 = new File("a.txt");
String absolutePath2 = f2.getAbsolutePath();
System.out.println(absolutePath2); //H:\IdeaProjects\LearnDemo\a.txt
}
public String getPath()
:将此File转换为路径名字符串。
private static void show02() {
File f1 = new File("H:\\IdeaProjects\\LearnDemo\\a.txt");
System.out.println(f1.getPath()); //H:\IdeaProjects\LearnDemo\a.txt
File f2 = new File("a.txt");
System.out.println(f2.getPath()); //a.txt
}
public String getName()
:返回由此File表示的文件或目录的名称。
private static void show03() {
File f1 = new File("H:\\IdeaProjects\\LearnDemo\\a.txt");
System.out.println(f1.getName()); //a.txt
File f2 = new File("a.txt");
System.out.println(f2.getName()); //a.txt
}
public long length()
:返回由此File表示的文件的大小,以字节为单位。
private static void show04() {
File f1 = new File("F:\\Test\\HelloWorld.java");
long l1 = f1.length();
System.out.println(l1); //314
File f2 = new File("F:\\Test\\2.jpg");
long l2= f2.length();
System.out.println(l2);
File f3 = new File("F:\\YunNote");
long l3 = f3.length();
System.out.println(l3);
}
判断功能的方法
public boolean exists()
:此File表示的文件或目录是否实际存在。public boolean isDirectory
:此File表示的是否为目录。public boolean isFile()
:此File表示的是否为文件。
private static void show01() {
File f1 = new File("F:\\Test\\HelloWorld.java");//存在的文件路径
System.out.println(f1.exists()); //true
System.out.println(f1.isDirectory()); //false
System.out.println(f1.isFile()); //true
}
创建删除功能的方法
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
private static void show01() {
File f1 = new File("F:\\Test\\JavaLearn");
try {
System.out.println(f1.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean delete()
:删除由此File表示的文件或目录。 (** 目录必须为空才能删除**)
private static void show02() {
File f1 = new File("F:\\Test\\JavaLearn");
boolean delete = f1.delete();
System.out.println(delete);
}
public boolean mkdir()
:创建由此File表示的目录。
private static void show03() {
File f1 = new File("F:\\Test\\JavaLearn"); //F:\Test路径存在
boolean mkdir1 = f1.mkdir();
System.out.println(mkdir1); //true
File f2 = new File("F:\\Test\\Java\\Doc\\Demo"); //F:\Test\Java\Doc路径不存在
boolean mkdir2 = f2.mkdir();
System.out.println(mkdir2); //false
}
public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
private static void show04() {
File f1 = new File("F:\\Test\\Java\\Doc\\Demo");
boolean mkdirs = f1.mkdirs();
System.out.println(mkdirs);
}
4. 目录的遍历
public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。
private static void show01() {
File file = new File("F:\\Test");
String[] arr = file.list();
for (String fileName : arr) {
System.out.println(fileName);
}
}
public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录。
private static void show02() {
File f= new File("F:\\Test");
File[] files = f.listFiles();
for (File file : files) {
System.out.println(file);
}
}
递归
1. 概述
递归:指在当前方法内调用自己的这种现象。
private static a() {
System.out.println("a方法!");
a();
}
递归的分类:直接递归和间接递归。
注意事项:
- 递归要有条件限定,使递归能够停下来,否则会发生内存溢出
- 即使有条件限定,递归次数也不能过多,否则也会发生内存溢出
- 构造方法禁止递归