路径:
相对路径 和 绝对路径(带盘符):
- File对象就表示一个路径,可以是一个文件的路径,也可以示文件夹的路径
- 这个路径 可以存在 或 不存在
File对象的创建方式:三种构造方法
后两种其实就是实现了拼接
代码演示:
public class Test01 {
public static void main(String[] args) {
//WINDOWS路径"D:\OneDrive\桌面\aaa.txt"
//注意 \ 是转义字符,要在用一个 \ 来转义
//1.将字符串表示的路径变成file对象
String file="D:\\OneDrive\\桌面\\aaa.txt";
File f1 = new File(file);
System.out.println(f1);
//2.把父级路径和子级路径进行拼接
String parent="D:\\OneDrive\\桌面";
String child="aaa.txt";
File f2=new File(parent,child);
System.out.println(f2);
//3.把父级文件对象和子级字符串路径进行拼接
File parent1=new File("D:\\OneDrive\\桌面");//文件对象
String child1="aaa.txt";//字符串路径
File f3=new File(parent1,child1);
System.out.println(f3);
}
}
File常见成员方法:
分为:
判断、获取
前三个是判断、后五个是获取
判断方法代码演示:
演示准备:
1.
2.进入aaa
3.有三个文件夹、两个文件
public class Test01 {
public static void main(String[] args) {
/*
public boolean isDirectory() 判断此路径名表示的File是否为文件夹
public boolean isFile() 判断此路径名表示的File是否为文件
public boolean exists() 判断此路径名表示的File是否存在
*/
File f1=new File("E:\\aaa\\ccc");
System.out.println(f1.isDirectory());//true
System.out.println(f1.isFile());//false
System.out.println(f1.exists());//true
System.out.println("------------------------");
File f2=new File("E:\\aaa\\aaa.txt");
System.out.println(f2.isDirectory());//false
System.out.println(f2.isFile());//true
System.out.println(f2.exists());//true
System.out.println("------------------------");
File f3=new File("E:\\aaa\\ccc.txt");
System.out.println(f3.isDirectory());//false
System.out.println(f3.isFile());//false
System.out.println(f3.exists());//false
}
}
获取方法代码演示:
演示准备:
1.
2.进入aaa
3.有三个文件夹、两个文件
public class Test02 {
public static void main(String[] args) {
/*
public long length() 返回文件的大小(字节数量)
public String getAbsolutePath() 返回文件的绝对路径
public String getPath() 返回定义文件时使用的路径
public String getName() 返回文件的名称,带后缀
public long lastModified() 返回文件的最后修改时间(时间毫秒值)
*/
/*1.length返回文件的大小(字节数量)*/
// 细节1.:这个方法只能获取文件的大小,单位是字节
// 如果单位我们要是M,G,可以不断的除以1024
// 细节2:这个方法无法获取文件夹的大小
// 如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起
File f1=new File("E:\\aaa\\aaa.txt");
System.out.println(f1.length());//10字节
File f2=new File("E:\\aaa\\bbb");
System.out.println(f2.length());//文件夹永远是0字节
System.out.println("---------------------------------------");
/*2.getAbsolutePath()返回文件的绝对路径*/
File f3=new File("E:\\aaa\\bbb.txt");
System.out.println(f3.getAbsolutePath());// E:\aaa\bbb.txt
//***此时在当前项目下新建一个bbb.txt文件****
File f4=new File("bbb.txt");
System.out.println(f4.getAbsolutePath());//E:\IdeaProjects\fileDemo\bbb.txt
System.out.println("---------------------------------------");
/* 3.getPath()返回定义文件时使用的路径 */
File f5=new File("E:\\aaa\\bbb.txt");
System.out.println(f5.getPath());//E:\aaa\bbb.txt
File f6=new File("bbb.txt");
System.out.println(f6.getPath());//bbb.txt
System.out.println("---------------------------------------");
/* 4. getName()返回文件的名称,带后缀*/
//细节1:
//bbb.txt:
// bbb 文件名
// txt 后缀名、扩展名
//细节2:
//文件夹:返回的就是文件夹的名字
File f7=new File("E:\\aaa\\bbb.txt");
System.out.println(f7.getName());//bbb.txt
File f8=new File("E:\\aaa\\bbb");
System.out.println(f8.getName());//bbb
/* 5.lastModified 返回文件的最后修改时间(时间毫秒值)*/
File f9=new File("E:\\aaa\\bbb.txt");
System.out.println(f9.lastModified());//1707034934000
//课堂练习:将文件的最后修改时间的毫秒值变成下面格式
//yyyy年MM月dd日 HH:mm:ss
Date d=new Date(1707034934000L);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String time = sdf.format(d);
System.out.println(time);//2024年02月04日 16:22:14
}
}
创建、删除、
演示准备:
1.
2.进入aaa
3.有三个文件夹、两个文件
创建方法代码演示:
public class Test03 {
public static void main(String[] args) throws IOException {
/*
public boolean createNewFile() 创建一个新的空的文件
public boolean mkdir() 创建单级文件夹
public boolean mkdirs() 创建多级文件夹
public boolean delete() 删除文件、空文件夹
*/
/*1.createNewFile 创建一个新的空的文件*/
//细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true
// 如果当前路径表示的文件是存在的,则创建失败,方法返回false
//细节2:如果父级路径是不存在的,那么方法会有异常IOException
//细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
File f1 = new File("E:\\aaa\\eee.txt");
System.out.println(f1.createNewFile());//true
/*2.mkdir make Directory,文件夹(目录)*/
//细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
//细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。
File f2 = new File("E:\\aaa\\eee");
System.out.println(f2.mkdir());//true
/*3.mkdirs 创建多级文件夹*/
//细节:既可以创建单级的,又可以创建多级的文件夹
File f3 = new File("E:\\aaa\\ccc\\ddd\\eee");//在ccc下创建了ddd,ddd下创建了eee
System.out.println(f3.mkdirs());//true
}
}
演示完:
创建的文件夹和文件
多级文件夹也创建出来了
删除方法代码演示:
public class Test04 {
public static void main(String[] args) {
/*
public boolean delete() 删除文件、空文件夹
细节:
如果删除的是文件,则直接删除,不走回收站。
如果删除的是空文件夹,则直接删除,不走回收站
如果删除的是有内容的文件夹,则删除失败
*/
//1.创建File对象
File f1 = new File("E:\\aaa\\eee");
//2.删除
System.out.println(f1.delete());//true
//1.创建File对象
File f2 = new File("E:\\aaa\\eee.txt");
//2.删除
System.out.println(f2.delete());//true
}
}
删除后:
获取文件夹:
一个listroot方法
两个重载的list方法
三个重载的listFiles方法
只需掌握蓝标的方法
演示准备:
1.
2.进入aaa
3.有二个文件夹、两个文件
注:bbb文件夹下有ddd文件夹
public class Test05 {
public static void main(String[] args) {
// 1.创建File对象
File f3 = new File("E:\\aaa\\bbb");
File[] files3 = f3.listFiles();
System.out.println(Arrays.toString(files3));//[E:\aaa\bbb\ddd]
//1.创建File对象
File f1 = new File("E:\\aaa\\ccc");
File[] files1 = f1.listFiles();
System.out.println(Arrays.toString(files1));//[]
//1.创建File对象
File f2 = new File("E:\\aaa\\bbb.txt");
File[] files2 = f2.listFiles();
System.out.println(Arrays.toString(files2));//null
/*需求:打印里面所有的txt文件*/
//1.创建File对象
File f = new File("E:\\aaa");
File[] arr = f.listFiles();
for (File file : arr) {
//file依次表示aaa文件夹里面每一个文件或者文件夹的路径
if(file.isFile() && file.getName().endsWith(".txt")){
System.out.print(file+" ");
}
}
}
}
控制台:
[E:\aaa\bbb\ddd]
[]
null
E:\aaa\bbb.txt E:\aaa\ccc.txt