File 是文件或目录(文件夹)的抽象表现形式,可以使用File来封装一个文件
构造方法
File(File parent,String child)
File(String parent,String child)
File(String pathname);
File f = new File(文件/文件夹路径);
绝对路径:带有盘符号的详细路径
相对路径:不带盘符号的路径
./当前路径 ../当前路径上一级路径 ../../当前路径上两级路径
File(String parent,String child)
File f = new File(父路径,子路径/文件名加后缀);
File(File parent,String child);//父路径是File文件形式
File f1 = new File(父路径);
File f2 = new File(f1,子路径);
与创建相关的方法
File f = new File("a.txt");//先封装好
//创建一个文件 返回值代表文件是否创建成功 重复创建该文件 返回false
boolean b = f.creatNewFile();
//创建目录 重复创建返回false E盘下创建test文件夹
File f1 = new File("E:\\test");
boolean b = f1.mkdir();
//创建多级目录 E盘下创建demo 其下再创建haha 再其下创建hehe
File a = new File("E:\\demo\\haha\\hehe");
boolean b = f1.mkdirs();
//删除文件或目录(只能删除空目录) 注意 不走回收站 返回值代表文件是否删除成功
File f = new File("a.txt");
boolean b = f.delete();
File f = new File("E:\\test");
boolean b = f.delete();
//删除非空目录 采用上面方法的递归方法
//重命名 当你源文件和传入的文件在同一目录下 方法结果就是重命名
File f = new File("a.txt");
File i = new File("b.txt");
boolean b = f.renameTo(i); a.txt变为b.txt
File l = new File("c.txt");//源文件与传入文件不在同一路径 方法结果就是剪切及重命名
File e = new File("E:/d.txt");
boolean l = f.renameTo(e);
判断功能
File f = new File("b.txt");
File a = new File("test");
//判断是否为文件
boolean b = f.isFile();
//判断是否为文件夹
boolean c = a.isDirectory();
//判断文件或目录是否存在
boolean b = f.exists();
//判断是否为可读可写
boolean b = f.canRead();
boolean b = f.canWrite();
//判断文件是否隐藏
boolean b = f.isHidden();
//判断文件是否可执行 Liunx 系统下 判断文件是否可执行
boolean b = f.canExecute();
//判断文件是否为绝对路径
boolean b = f.isAbsolute();
获取方法
File f = new File("E:\\demo\\haha\\hehe");
String name = f.getName();//获取文件或文件目录的名称
long length = f.length();//获取文件长度 字节数
//获取绝对路径
String absolutePath = f.getAbsoluteFile();//返回字符串形式
File absolutePath = f.getAbsoluteFile();//返回File形式,更加灵活
//获取相对路径
File f = new File("a.txt");
String path = f.getPath();
//获取文件的父路径
String p = f.getParent();
File pf = f.getParentFile();
//获取盘符的总空间大小
File f = new File("D:/");
long ts = f.getTotalSpace();//单位是字节
//获取剩余空间
long fs = f.getFreeSpace();
//获取文件的修改时间
long lt = f.lastModified();//毫秒
//把毫秒值转为年月日时分秒
Date d = new Date(lt);
//获取该目录下所有文件或文件夹的名称
public String[] list();
String[] sl = f.list();
//获取目录下所有文件或文件夹的File形式数组
File[] fl = f.listFiles();
该方法的重载方法可以传入一个过滤器 //根据结果决定放进数组还是不放入
File[] fl = f.listFiles(new FilenameFilter()){
@Override
public boolean accept(File dir, String name) {//dir 是父路径,name是子文件
File fil = new File(dir,name);
if(fil.isFile()&&fil.getName().endWith(".jpg")){//判断是否为.jpg结尾的文件
return true;//是则放进数组
}else{
return false;
}
}
});