一、File类
1、概述
File表示文件或文件夹的路径。
注意事项:File对象只表示一个路径,不表示文件,所以不管文件存不存在,File对象都不会报错。
2、构造方法
方法 | 说明 |
---|---|
public File(String pathname) | 给定路径名称创建File对象 |
public File(String parent, String child) | 给定父路径和子路径创建File对象 |
public File(File parent, String child) | 给定父路径的File类型和子路径创建File对象 |
代码演示
import java.io.File;
public class Test01 {
public static void main(String[] args) {
//File的构造方法
// \是一个转义字符,能让有意义的字符变成没意义的,能没意义的字符变成有意义的
//System.out.println("\t");
//System.out.println("\\a");
//结论:在""中如果想写\ 就一定要写成\\
System.out.println( " \" ");
//public File(String pathname)
//给定路径名称创建File对象
File f1 = new File("C:\\Users\\jin\\Desktop\\文件复制.java");
//File f2 = new File("C:/Users/jin/Desktop/文件复制.java");
//public File(String parent, String child)
//给定父路径和子路径创建File对象
File f2 = new File("C:\\Users\\jin\\Desktop","文件复制.java");
//public File(File parent, String child)
//给定父路径的File类型和子路径创建File对象
File f4 = new File(new File("C:\\Users\\jin\\Desktop"),"文件复制.java");
}
}
3、获取方法
方法介绍
方法 | 说明 |
---|---|
getAbsolutePath() | 获取绝对路径 |
getName() | 获取文件名 |
length() | 获取文件大小(不能获取目录的大小) |
代码演示
import java.io.File;
public class Test02 {
public static void main(String[] args) {
//File的获取方法
//创建对象
File f = new File("C:\\Users\\jin\\Desktop\\文件复制.java");
//getAbsolutePath()
//获取绝对路径
String s1 = f.getAbsolutePath();
System.out.println(s1); //C:\User\jin\Desktop\文件复制.java
//getName()
//获取文件或文件夹名
String name = f.getName();
System.out.println(name); //文件复制.java
//length()
//获取文件大小(不能获取文件夹的大小)
//如果获取文件夹的大小返回的是0或4096这个结果没有意义
long length = f.length();
System.out.println(length); //850 代表文件的字节个数
}
}
4、绝对路径和相对路径
绝对路径:绝对路径就是从盘符开始的路径。
相对路径:不从盘符开始的路径,相对于当前项目。
import java.io.File;
public class Test03 {
public static void main(String[] args) {
//如果我要表示123.txt这个文件
//路径怎么写?
//相对路径:
//不以盘符开始,系统会默认在前面补全当前项目路径
File f1 = new File("day10\\123.txt");
//绝对路径:
File f2 = new File("C:\\soft\\IdeaProjects\\SE143\\day10\\123.txt");
//这两个写法此时表示的是同一个文件
}
}
5、判断方法
方法介绍
方法 | 说明 |
---|---|
exists() | 判断路径是否存在 |
isFile() | 判断是否是文件 |
isDirectory() | 判断是否是文件夹(目录) |
代码演示
import java.io.File;
public class Test04 {
public static void main(String[] args) {
File f = new File("day10\\123.txt");
//exists()
//判断路径是否存在
System.out.println(f.exists()); //true
//isFile()
//判断是否是文件
System.out.println(f.isFile()); //true
//isDirectory()
//判断是否是文件夹
System.out.println(f.isDirectory()); //false
}
}
6、创建删除方法
方法介绍
方法 | 说明 |
---|---|
createNewFile() | 创建一个文件 |
delete() | 删除一个文件或空文件夹(不能删除有文件的文件夹) |
mkdir() | 创建单层文件夹 |
mkdirs() | 创建任意层文件夹 |
代码演示
import java.io.File;
import java.io.IOException;
public class Test05 {
public static void main(String[] args) throws IOException {
//File创建和删除方法
File f = new File("C:\\Users\\jin\\Desktop\\abc");
//createNewFile()
//创建一个文件
f.createNewFile();
//delete()
//删除一个文件或空文件夹(不能删除有文件的文件夹)
//注意事项:删除方法不走回收站
f.delete();
//mkdir()[不用]
//创建单层文件夹
f.mkdir();
//mkdirs()
//创建任意层文件夹
f.mkdirs();
}
}
7、遍历文件夹方法
方法介绍
方法 | 说明 |
---|---|
list() | 获取目录下所有内容的名称 |
listFiles() | 获取目录下所有内容的File对象形式 |
代码演示
import java.io.File;
public class Test06 {
public static void main(String[] args) {
//File的遍历文件夹方法
File f = new File("C:\\Users\\jin\\Desktop\\day09");
//list()
//获取目录下所有内容的String名称
String[] strs = f.list();
//遍历数组
for (String str : strs) {
System.out.println(str);
}
//listFiles()
//获取目录下所有内容的File对象形式
File[] files = f.listFiles();
//遍历数组
for (File file : files) {
System.out.println(file.getName());
}
}
}
练习
统计文件夹下java文件的个数
如果只需要使用名字就可以使用list(), 如果要调用File的方法就需要使用listFiles()
import java.io.File;
public class Test07 {
public static void main(String[] args) {
//统计文件夹下java文件的个数
File f = new File("C:\\Users\\jin\\Desktop\\abc");
//定义计数器
int count = 0;
//遍历文件夹
File[] files = f.listFiles();
//遍历数组
for (File file : files) {
//判断是否是文件 并且是否是.java结尾
if(file.isFile() && file.getName().endsWith(".java")){
count++;
}
}
System.out.println("java文件的个数是" + count);
}
}