Java:File类
File类的概述
- 文件和目录路径名的抽象表示形式
- 表示的文件/目录不一定存在
构造方法
- File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例 - File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 - File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例 - File(URI uri)
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
File file = new File("D:/file/newfile");
File file = new File("D:/file","newfile");
File fileParent = new File("D:/file"); File file = new File(fileParent,"newfile");
//以上三种定义的file指向同样的路径
私以为这个类是英语影响Java学习速度的典型代表
创建
public boolean createNewFile()//创建文件 文件已存在就不会被创建 父级目录必须存在
public boolean mkdir()//创建目录 目录已存在就不会被创建 父级目录必须存在
public boolean mkdirs()//创建目录 父级目录不存在则创建
删除
public boolean delete()//删除文件/目录 目录必须为空
移动&重命名
//可改变文件路径及名称
public boolean renameTo(File dest)//将文件移动到目标路径,更改为目标名称
判断功能
public boolean isDirectory()//是否为目录
public boolean isFile()//是否为文件
public boolean exists()//是否可执行
public boolean canRead()//是否可读
public boolean canWrite()//是否可写
public boolean isHidden()//是否可见
基本获取功能
public String getAbsolutePath()//得到绝对路径
public String getPath()//得到对象中存储的路径
public String getName()//返回文件(目录)名
public long length()//返回文件字节数
public long lastModified()//返回此抽象路径名表示的文件上次修改的时间(毫秒值) 配合new Date()使用
public String[] list()//返回目录下的文件和目录的名称数组 若该File指向一个文件则返回null
public File[] listFiles()//返回目录下的文件和目录的File数组 若该File指向一个文件则返回null
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
FilenameFilter接口 用于筛选获取目录下的一部分文件
//示例
//FilenameFilter
String [] files = file.list(new FilenameFilter(){
@override
public boolean accpet(File dir , String name){//dir为调用者file,name为文件名
return name.endsWith(.txt);
//return new File(dir,name).isFile && name.endsWith(.txt);确保是文件
}
});//返回file目录下的TXT文件名称数组
private File [] getFiles(File file){
File [] files = null;
if(file.isFile())return files;
if(file.isDirectory()){
files = file.listFiles((File dir, String name)->new File(dir,name).isDirectory()&&name.endsWith(".jpg"));
}
return files;
}//返回目录file下以.jpg为结尾的文件夹File数组
//FileFilter 仅listFiles可用
private File [] gotFiles(File file){
File [] files = null;
if(file.isFile())return files;
if(file.isDirectory()){
files = file.listFiles((pathname)->pathname.isDirectory()&&pathname.getName().endsWith(".jpg"));//pathname为指向file目录下文件的File类型变量
}
return files;
}//返回目录file下以.jpg为结尾的文件夹File数组
简单应用:递归删除文件/目录下的所有文件
import java.io.File;
public class Main {
private static void delete(File file){
File [] files;
if(file.isFile()){
if(file.delete())
System.out.println(file.getAbsolutePath());
}else if(file.isDirectory()){
files = file.listFiles();
for(File f : files){
delete(f);
}
if(file.delete())
System.out.println(file.getAbsolutePath());
}
}
public static void main(String[] args) {
delete(new File("D:\\tem"));//文件/目录名
}
}
2018/8/4