File类的概述
它是文件和目录路径名的抽象表示,文件和目录是可以通过File封装成对象的。对于File而言,其封装的并不是一个真正的文件,仅仅是一个路径名,他可以是存在的,也可以是不存在的,将来要通过具体的操作把这个路径的内容转化成具体存在的。
构造方法:
public File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 如果给定的字符串是空字符串,则结果是空的抽象路径名。
public File(String parent,String child)
从父路径名字符串和子路径名字符串创建新的File实例。
public File(File parent,String child)
从父抽象路径名和子路径名字符串创建新的File实例。
public class FileDemo1 {
public static void main(String[] args) {
/* public File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
如果给定的字符串是空字符串,则结果是空的抽象路径名。*/
// F:\a.txt,把这个路径下的文件封装成一个对象
File file = new File("F:\\a.txt");
System.out.println(file);
/* public File(String parent,String child)
从父路径名字符串和子路径名字符串创建新的File实例。*/
File file1 = new File("F:\\Demo", "b.txt");
System.out.println(file1);
/* public File(File parent,String child)
从父抽象路径名和子路径名字符串创建新的File实例。*/
File file2 = new File("F:\\Demo");
File file3 = new File(file2, "b.txt");
System.out.println(file3);
}}
创建功能
public boolean createNewFile() 创建文件
public boolean mkdir() 创建文件夹
public boolean mkdirs() 创建多级文件夹
public class FileDemo2 {
public static void main(String[] args) {
//需求:我想在F盘下面创建一个文件夹demo2
//封装成File对象,不需要文件或者目录是否已经存在,它只是将一个路径抽象的用File表示
//将来你可以用File类中的一些方法,来进行创建或者删除
File file = new File("F:\\Demo2");
//public boolean mkdir()
// 创建由此抽象路径名命名的目录,如果目标文件夹已经存在,就不创建了,返回false
boolean mkdir = file.mkdir();
System.out.println(mkdir);
//public boolean createNewFile()
// 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
//需求2:我想在F盘下面的demo2文件夹中创建一个文件b.txt
//将目标文件封装成File对象
File file1 = new File("F:\\Demo2\\b.txt");
try {
System.out.println(file1.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
//public boolean mkdirs() 创建多级文件夹
File file2 = new File("F:\\Demo2\\bigdate\\day23");
System.out.println(file2.mkdirs());
//注意1:要想在某个目录下创建文件,前提是该目录必须存在!!
File file3 = new File("F:\\Demo3\\b.txt");
try {
System.out.println(file3.createNewFile());
} catch (IOException e) {
e.printStackTrace();//系统找不到指定的路径
}
//注意2:将来你要搞清楚是想要创建文件还是创建文件夹
}
}
删除功能:
public boolean delete()
//需求:我想要删除aaa这个文件夹
//注意:要删除的目录必须是空
File aaa = new File("aaa");
System.out.println(aaa.delete());
重命名功能
public boolean renameTo(File dest)
File file = new File("F:\\Demo\\b.txt");
File file1 = new File("F:\\Demo\\改名.txt");
System.out.println(file.renameTo(file1));
判断功能
public boolean isDirectory()
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden()
public class FileDemo5 {
public static void main(String[] args) {
/*public boolean isDirectory()//判断是不是文件夹*/
File file = new File("F:\\Demo");
System.out.println(file.isDirectory());
// public boolean isFile()
//判断是不是一个文件
System.out.println(file.isFile());
File file1 = new File("F:\\Demo\\改名.txt");
System.out.println(file1.isFile());
// public boolean exists(),判断目标文件或者文件夹是否存在
File file2 = new File("F:\\Demo1");
System.out.println(file2.exists());
// public boolean canRead()
//判断目标是否可读
System.out.println(file1.canRead());
// public boolean canWrite()
//判断是否可写
System.out.println(file1.canWrite());
// public boolean isHidden()
//判断是否隐藏
System.out.println(file1.isHidden());
}
}
基本获取功能
public String getAbsolutePath()
public String getPath()
public String getName()
public long length()
public long lastModified()
File file = new File("F:\\Demo2\\b.txt");
// public String getAbsolutePath(),获取绝对路径
System.out.println(file.getAbsoluteFile());
// public String getPath(),获取相对路径
System.out.println(file.getPath());
// public String getName(),获取名称
System.out.println(file.getName());
// public long length(),获取字节数
System.out.println(file.length());
特别需要注意这里lastModelified方法返回的是一个时间戳,并且格式并不是我们熟悉的格式,所以我们要对时间进行格式转换
// public long lastModified(),返回的是一个时间戳,精确到毫秒
System.out.println(file.lastModified());
Date date = new Date(file.lastModified());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));
高级获取功能
public String[] list(),获取指定目录下的所有文件和文件夹的名称组成的数组
File file = new File("F:\\Demo2");
String[] list = file.list();
for (String s : list) {
System.out.println(s);
}
public File[] listFiles(),获取指定目录下的所有文件和文件夹形成的File对象数组
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(file1);
}
文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// return false;
File file1 = new File(dir, name);
boolean file2 = file1.isFile();
boolean b = name.endsWith(".jpg");
return file2 && b;
}
});