java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
public File(String pathname)
:通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。
public File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的 File 实例。
public File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的 File 实例。
相对路径:相对于当前文件所在路径,一般为项目根目录。 绝对路径:从盘符开始的路径,这是一个完整的路径。
tips1: 一个 File 对象代表硬盘中实际存在的一个文件或者目录,无论该路径下是否存在文件或者目录,都不影响 File 对象的创建。 tips2: Windows 与 Linux 的路径分隔符不一致( Windows是 \ ,Linux 是 / ),使用 File.separatorChar 可以拿到当前系统下的路径分隔符。
方法名 | 说明 |
---|---|
String getAbsolutePath( ) | 返回此 File 的绝对路径名字符串 |
String getPath( ) | 将此 File 转换为路径名字符串 |
String getName( ) | 返回由此 File 表示的文件或目录的名称 |
long length( ) | 返回由此 File 表示的文件的长度 |
boolean exists( ) | 此 File 表示的文件或目录是否实际存在 |
boolean isDirectory( ) | 此 File 表示的是否为目录 |
boolean isFile( ) | 此 File 表示的是否为文件 |
boolean createNewFile( ) | 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件 |
boolean delete( ) | 删除由此 File 表示的文件或目录 |
boolean mkdir( ) | 创建由此 File 表示的目录 |
boolean mkdirs( ) | 创建由此 File 表示的目录,包括任何必需但不存在的父目录 |
String[ ] list( ) | 返回一个 String 数组,表示该 File 目录中的所有子文件或目录 |
File[ ] listFiles( ) | 返回一个 File 数组,表示该 File 目录中的所有的子文件或目录 |
public class DemoRecursion {
public static void main(String[] args) {
//创建文件对象
File file = new File("E:\\");
recurstion(file);
}
public static void recurstion(File file) {
//合法性判断
if (file == null) {
return;
}
//获取文件夹下所有的子文件或者文件夹
File[] files = file.listFiles();
//可能因为权限等问题无法获取文件夹内的文件
if (files == null) {
return;
}
//遍历文件数组
for (File file1 : files) {
if (file1.isDirectory()) {
//是文件夹则打印文件夹路径并递归
System.out.println(file1.getPath());
recurstion(file1);
} else {
//否则打印文件路径加文件长度
System.out.println(file1.getPath() + "\t大小是:" + ((float)file1.length() / 1024 / 1024) + "M");
}
}
}
}
public class DemoCreateFile {
public static void main(String[] args) {
//指定文件路径
File file = new File("D:\\WorkSpace");
//传递一个递归结束条件
int i = 0;
//调用方法
recursion(file,i);
}
public static void recursion(File file,int i) {
//递归结束条件
if (i > 100) return ;
//指定创建的文件夹
File f = new File(file,"new");
//创建文件夹
f.mkdirs();
//递归调用
recursion(f,i);
}
}
public class DemoDeleteFile {
public static void main(String[] args) {
//指定路径
File file = new File("D:\\WorkSpace\\new");
delete(file);
}
private static void delete(File file) {
//判断是否存在
if (file.exists()) {
//判断是否是文件夹
if (file.isDirectory()) {
//获取文件夹内所有的文件和文件夹
File[] files = file.listFiles();
if (files.length > 0) {
//若数组长度大于0则该文件夹内有内容
for (File file1 : files) {
//遍历数组,递归文件夹
delete(file1);
}
}
//删除文件夹
file.delete();
} else {
//不是文件夹则直接删除文件
file.delete();
}
}
}
}
public class DemoRecursion {
static boolean b = false;
public static void main(String[] args) {
//创建文件对象
File file = new File("E:\\");
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查找的文件");
String s = sc.next();
recurstion(file,s);
if (!b) {
System.out.println("没有找到文件");
}
}
public static void recurstion(File file,String s) {
//合法性判断
if (file == null) {
return;
}
//使用过滤器获取文件夹下所有的子文件或者文件夹
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//判断是否为文件夹或者是包含查找字符串的文件名
return file.isDirectory() || file.getName().contains(s);
}
});
//遍历数组
for (File file1 : files) {
if (file1.isDirectory()) {
//是文件夹则并递归
recurstion(file1,s);
} else {
//设置找到了文件
b = true;
//打印文件路径
System.out.println(file1.getPath());
}
}
}
}