一、File类
1、概述
文件和目录路径名的抽象表示形式
2、构造方法
public File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 如果给定的路径字符串是空路径,则结果是空的抽象路径名。
public File(String parent,String child)
从父路径名字符串和子路径名字符串创建新的File实例,没有路径,则是抽象路径名。
public File(File parent,String child)
从父抽象路径名和子路径名字符串创建新的File实例。
File file=new File("D:\\a.text");
System.out.println(file);
File file2=new File("D:\\demo","a.text");
System.out.println(file2);
File file3=new File("D:\\demo");
File file4=new File(file3,"b.text");
System.out.println(file4);
D:\a.text
D:\demo\a.text
D:\demo\b.text
3、成员方法
(1)创建功能
public boolean mkdir() (文件夹)(有文件同名也创建不了)
创建由此抽象路径名命名的目录,返回true,如果目标文件夹已经存在,就不创建了,返回false
public boolean createNewFile() (要抛出异常)(文件)(若同目录下有文件夹名称相同也创建不了)
创建一个由该抽象路径名命名的新的空文件,返回true,如果目标文件已经存在,就不创建了,返回false
public boolean mkdirs()
创建多级文件夹
File file=new File("D:\\demo");
System.out.println(file.mkdir());
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
File file2 = new File("D:\\demo2\\demo3\\demo4\\demo5");
System.out.println(file2.mkdirs());
注意:要创建的是文件还是文件夹
要在某目录下创键文件和文件夹时要确保该目录存在。
(2)删除功能
public boolean delete() 删除文件或文件夹,给出的目录下为空才能删除,如果是多级文件目录,则需要一个个的删。
File file=new File("a.text");//没加盘符,默认相对路径
System.out.println(file.mkdir());
System.out.println(file.delete());
File file2 = new File("aaa\\bbb\\ccc");
System.out.println(file2.mkdirs());//创建多级文件夹,需要一个个的删
System.out.println(file2.delete());
File file4 = new File("aaa\\bbb");
System.out.println(file4.delete());
File file3 = new File("aaa");
System.out.println(file3.delete());
(3)重命名功能
public boolean renameTo(File dest):给文件重命名,文件夹不行
File file = new File("E:\\ftm.jpg");
//现在我想重命名为冯提莫.jpg
File file1 = new File("E:\\冯提莫.jpg");
System.out.println(file.renameTo(file1));
(4)判断功能
File file = new File("a.txt");
//public boolean isDirectory() 判断是否是文件夹
System.out.println(file.isDirectory());
//public boolean isFile() 判断是否是文件
System.out.println(file.isFile());
//public boolean exists() 判断目标文件或者文件夹是否存在
System.out.println(file.exists());
//public boolean canRead() 判断是否可读
System.out.println(file.canRead());
//public boolean canWrite() 判断是否可读
System.out.println(file.canWrite());
//public boolean isHidden() 判断是否隐藏
System.out.println(file.isHidden());
(5)基本获取功能
File file = new File("a.txt");
//public String getAbsolutePath()获取绝对路径,或者说完整路径
System.out.println(file.getAbsolutePath());
//public String getPath()获取相对路径(不带盘符)
System.out.println(file.getPath());
//public String getName()获取名称
System.out.println(file.getName());
//public long length()获取的长度是字节数,文件的大小
System.out.println(file.length());
//public long lastModified()返回的是一个时间戳,转换后的时间是文件创建的时间
//1645064059299 精确到毫秒
System.out.println(file.lastModified());
//java将时间戳与日期进行转换
//Date(long date)
//分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。
Date date = new Date(file.lastModified());
System.out.println(date); //显示的日期还是不好观察,下面规范化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(date);
System.out.println(format);
a.txt
a.txt
0
1645101621772
Thu Feb 17 20:40:21 CST 2022
2022-02-17 20:40:21
(6)高级获取功能
public String[] list()获取指定目录下的所有文件和文件夹的名称组成的数组 public File[] listFiles()获取指定目录下的所有文件和文件夹形成的File对象数组
File file = new File("D:\\soft");
//public String[] list()
String[] list = file.list();
for (String s : list) {
System.out.println(s);
}
System.out.println("============================");
//public File[] listFiles()
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
idea
java
============================
D:\soft\idea
D:\soft\java
4、应用
/*
需求:判断D盘下面有没有.jpg后的文件,如果有,就输出此文件名称
1、将D盘根目录封装成一个File对象
2、获取该目录下所有的文件或者文件夹组成的File对象数组
3、遍历File数组,得到每一个File对象,然后判断是否是文件
是:继续判断是否以.jpg后缀
是:输出名称
不是:不管他
不是:不管他
*/
public class FileDemo8 {
public static void main(String[] args) {
File file = new File("D:\\");
File[] files = file.listFiles();
for(File f : files){
if(f.isFile()){
if(f.getName().endsWith(".jpg")){
System.out.println(f.getName());
}
}
}
}
}
/*
判断D盘下面有没有.jpg后的文件,如果有,就输出此文件名称
1、先获取所有的文件和文件夹,然后在遍历的时候,再去判断是否是文件,是否是.jpg后缀的,最后再将满足条件的文件过滤出来获取到名称。
2、在获取的时候,获取到的数据就是满足条件的,我们直接输出就可以了。
文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
*/
public class FileDemo9 {
public static void main(String[] args) {
//创建File对象
File file = new File("D:\\");
//public String[] list(FilenameFilter filter)
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file1 = new File(dir, name);
boolean b = file1.isFile();
boolean b1 = name.endsWith(".jpg");
return b && b1;
}
});
for (String s : list){
System.out.println(s);
}
}
}