JAVA基础总结(九) ---- File类
程序员文章站
2022-06-16 21:22:40
...
JAVA基础总结(九) ---- File类
java.io.File类
java把电脑中的文件和文件夹封装为一个File类
File类与系统无关,任何操作系统都可以使用类中的方法
File类的静态方法
windows和linux系统中路径分隔符与文件名分隔符不同,因此路径不能写死:
//路径分隔符
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator); //Windows 分号;Linux 冒号:
//文件名称分割符
String separator = File.separator;
System.out.println(separator); //Windows \ Linux /
写为:
"C:" + File.separator + "develop" + File.separator + "a.txt"
File类的构造方法
File(String pathname) 通过给定的路径名称字符串创建File实例
File(String parent,String child) 根据父路径与子路径创建一个新的File实例
File(File parent,String child) 根据父路径与子路径创建一个新的File实例
File类常用方法
用于获取文件路径信息
File f = new File("d:/aaa/bbb.java");
System.out.println("文件绝对路径:"+f.getAbsolutePath());
System.out.println("文件构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件长度:"+f.length()+"字节");
用于判断:
-
public boolean exists()
:此File表示的文件或目录是否实际存在。 -
public boolean isDirectory()
:此File表示的是否为目录。 -
public boolean isFile()
:此File表示的是否为文件。
用于创建删除文件:
-
public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 -
public boolean delete()
:删除由此File表示的文件或目录。 -
public boolean mkdir()
:创建由此File表示的目录。 -
public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
目录的遍历
注意list方法与listFiles方法返回的对象区别
File file = new File("C:\\xxx\\xxx\\xxx\\xxx");
String[] list = file.list();
for(String fileName:list){
System.out.println(fileName);
}
File[] files = file.listFiles();
for(File file1:files){
System.out.println(file1);
}
使用递归打印多级目录
public class Demo03Recurison {
public static void main(String[] args) {
//使用递归打印多级目录
File file = new File("C:\\aaa\\doc");
getAllFile(file);
}
public static void getAllFile(File dir){
File[] files = dir.listFiles();
for(File f:files){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}
文件过滤器
在File类中有两个和ListFiles重载的方法,方法的参数为文件过滤器
java.io.FileFilter接口:用于File对象的过滤器
java.io.FilenameFilter接口:用于过滤文件名称
定义FileFilter的实现类,在accept方法中定义过滤规则
public class FileFilterImpl implements FileFilter {
public boolean accept(File pathname) {
if(pathname.isDirectory())return true;
return pathname.getName().toLowerCase().endsWith(".png");
}
}
使用重载的方法传入过滤器
public static void main(String[] args) {
File file = new File("C:\\xxx\\doc");
getAllFile(file);
}
public static void getAllFile(File dir){
File[] files = dir.listFiles(new FileFilterImpl()); //传递过滤器对象
for(File f:files){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f);
}
}
}
或者使用匿名内部类优化
上一篇: Struct2 文件上传下载的坑
下一篇: SpringCloud详细宝典(上篇)