File类
17File类
java.io包下。File不能访问文件本身,要想访问文件本身的内容,需要使用io流。File可以表示文件或目录
构造方法
public File(String 文件路径); 通过给定路径创建一个实例
File file = new File("./src/data.txt");
注意:一个File对象代表着硬盘中实际存在的一个文件或目录。无论该路径下时候存在文件或目录,都不影响File对象的创建。
常用方法
访问文件名的操作
public String getAbsolutePath();返回此File的绝对路径
public String getPath();返回此File的当前路径,意思就是你在创建File对象的时候,给定了什么路径,就返回什么路径。
public String getName();返回此File表示的文件或目录名称
public long length(); 返回此File表示的文件长度,就是文件的字节大小
String getParent();返回此File对象的父级目录
boolean renameTo(File newName);重命名此File对象所对应的文件或目录,成功就返回true
File file = new File("./src/data.txt");
file.getAbsolutePath();//E:/eclipse/workSpace/java/src/data.txt 绝对路径就是系统盘符下的路径
File file1 = new File("./src/data.txt");
file1.getPath();//.src/data.txt 创建File实例的时候,给定了什么地址就返回什么地址
File file2 = new File("./src/data.txt");
file2.getName();//返回data.txt
file2.length();//返回这个文件的字节大小长度
file2.getParent();//返回fiel实例代表的目录的父级目录,若已经在根目录 就返回null
file2.renameTo(file2);//修改file2的名字,成功返回true
文件检测相关操作
public boolean exists();此File表示的文件或目录是否存在。
public boolean isDirectory();此File表示的是否是目录
public boolean isFile();此File表示的是否是文件
boolean canWrite();判断File对象所对应的文件或目录是否可写
boolean canRead();判断File对象所对应的文件或目录是否可读
boolean isAbsolute();判断File对象所对应的文件或目录是否是绝对路径
File file = new File("./src/data.txt");
file.exists();//存在返回true
file.isDirectory();
file.isFile();
file.canWrite();
file.canRead();
file.isAbsolute();
删除与创建操作
public boolean createNewFile();当且仅当具有该名称的文件上不存在时,创建一个空的该文件
public boolean delete();删除此File表示的文件或目录
public boolean mkdir();创建单级目录
public boolean mkdirs();创建多级目录,包括任何必须且不存在的目录
File file = new File("./src/data.txt");
file.exists(); //false
file.createNewFile();//创建成功返回true
file.exists();//true
File file1 = new File("./src/data.txt");
file.exists();//true
file.delete();//true
file.exists();//false
File file2 = new File("one");
file2.mkdir();//true 创建一级目录成功,只能创建一级目录
File file3 = new File("one/two/three");
file3.mkdirs();//true 可以创建多级目录,包括不存在的父级目录
获取文件常规信息
long lastModified();返回文件的最后修改时间
long length();返回文件内容的长度
遍历目录
public String[] list(); 返回一个String数组,存放File目录中的所有子文件或子目录名称
public File[] listFiles();返回一个FIle数组,存放File目录中所有子文件或子目录的对象
系统D盘下,有三个文件夹,one two three,每个文件加下面有两个文件
File file = new File("D:/");
String[] names = file.list();//获取到了one two three三个文件夹
for(String name : names){
System.out.println(name);//输出one two three
}
//调用listFile方法的File对象,必须是实际存在的文件或目录,否则返回null 无法进行遍历
File file1 = new File("D:/one");
File[] fr = file1.listFile();
for(File f : fr){
System.out.println(f.getName);//输出one下面的三个文件的名称
}
递归删除文件
public class Demo{
public static void main(String[] args){
File file = new File("D:/langsin");
//lnagsin下面有好多文件夹,每个文件夹下面还有文件夹和文件
delete(file);
}
public static void delete(File file){
if(file.isFile()){
file.delete();
}else{
File[] names = file.listFile();
for(File fr : names){
delete(fr);
}
file.delete();
}
}
}
FileFilter类
java.io.FileFilter接口是File的过滤器,作用是过滤文件,接口中只有一个抽线方法accept
boolean accept(File pathname);//判定指定抽象路径名是否应该包含在某个路径名列表中
//查找某个文件目录下的所有以.pdf结尾的文件
public class Demo{
static FileFilter filter = new FileFilter(){
@override
public boolean accept(File pathName){
String s = pathName.getName().toLowerCase();
if(s.endWith(".pdf")||pathName.isDirectory()){
return true;
}else{return false;}
}
};
public static void main(String[] args){
File file = new File("D:/langsin");
findFile(file);
}
public static void findFile(File file){
if(file.getName().endWith(".pdf")){
Sysout.out.println(file.getName());
}else{
File[] names = file.listFile(filter);
for(File f : names){
findFile(f);
}
}
}
}