路径:
相对路径 和 绝对路径(带盘符):
- 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());//trueSystem.out.println(f1.isFile());//falseSystem.out.println(f1.exists());//trueSystem.out.println("------------------------");File f2=new File("E:\\aaa\\aaa.txt");System.out.println(f2.isDirectory());//falseSystem.out.println(f2.isFile());//trueSystem.out.println(f2.exists());//trueSystem.out.println("------------------------");File f3=new File("E:\\aaa\\ccc.txt");System.out.println(f3.isDirectory());//falseSystem.out.println(f3.isFile());//falseSystem.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.txtSystem.out.println("---------------------------------------");/* 3.getPath()返回定义文件时使用的路径 */File f5=new File("E:\\aaa\\bbb.txt");System.out.println(f5.getPath());//E:\aaa\bbb.txtFile f6=new File("bbb.txt");System.out.println(f6.getPath());//bbb.txtSystem.out.println("---------------------------------------");/* 4. getName()返回文件的名称,带后缀*///细节1://bbb.txt:// bbb 文件名// txt 后缀名、扩展名//细节2://文件夹:返回的就是文件夹的名字File f7=new File("E:\\aaa\\bbb.txt");System.out.println(f7.getName());//bbb.txtFile 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