概念

JDK提供的表示和操作电脑磁盘中的文件夹或者文件
在JDK中 java.io.File
使用这个File 把磁盘中文件夹 和 文件 抽象成一个类 ,在虚拟机中进行操作
如果你想操作这些文件 ,第一点要找到这些文件 ,文件的位置在哪,文件的url地址 ,只要把文件的地址给你,你就可以创建一个文件对象,文件地址:文件在磁盘的位置 :E://log/log.txt
地址分为两类 :

  • 绝对地址相对于盘符 例如 :E://log/log.txt、E:\woniu\57\JavaSE\day17\Day17_SetAndMap集合.md
  • 相对地址相对于你正在操作的文件的位置 ,file.txt 、../hello.java 两个点 代表 上一级目录

    如何创建一个文件对象

    File(文件) - 图1在windows操作系统中 ,文件的分隔符 是使用的 “/“ ,如果使用反斜杠 \ 必须使用两个反斜杠 \ 因为反斜杠在Java程序中代表是 转义字符 如果想把反斜杠在java程序中当成 反斜杠使用 必须转义

    File 对象的API方法

    public class TestFile01 {
    public static void main(String[] args) {
    String path = “E:/woniu/57/JavaSE”;
    //创建文件对象
    File f1 = new File(path);
    System.out.println(f1.getName());

    //创建 E:/woniu/57/JavaSE/day01文件夹的对象
    String path1 = “E:/woniu/57/JavaSE/day01”;
    //File f2 = new File(path1);
    //File f2 = new File(f1,”day01”);
    File f2 = new File(“E:/woniu/57/JavaSE”,”day01”);
    System.out.println(f2.getName());
    }
    }public class TestFile02 {
    public static void main(String[] args) throws IOException {
    //创建 E:/woniu/57/JavaSE/Hello.java 对象

    String path = “E:/woniu/57/JavaSE/Hello.java”;
    File f = new File(path);
    //打印文件的名字
    String fileName = f.getName();
    //打印 文件的大小
    long length = f.length();
    System.out.println(fileName + “—-“+length);
    //获取文件最后一次被修改的时间
    long lastModified = f.lastModified();
    Date d = new Date(lastModified);
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
    System.out.println(“最后修改的时间是:”+sdf.format(d));

    //判断一下 这个对象 是文件 还是文件夹 (目录)
    boolean file = f.isFile();
    System.out.println(file);

    //判断当前对象 是不是一个 目录 (文件夹)
    boolean directory = f.isDirectory();
    System.out.println(directory);

    //判断一下文件是否存在
    boolean exists = f.exists();
    System.out.println(exists);


    String path1 = “E:/woniu/57/JavaSE/HelloWorld.java” ;
    File file1 = new File(path1);
    System.out.println(file1.exists()); //false

    //如果文件不存在 创建出来这个文件
    if(!file1.exists()){
    boolean createNewFile = file1.createNewFile();
    System.out.println(“createNewFile—->”+createNewFile);
    }

    //删除这个文件
    if(file1.exists()){
    //boolean delete = file1.delete(); //删除文件
    file1.deleteOnExit(); //不会立刻删除 当虚拟机退出的时候 删除文件
    }

    System.out.println(file1.exists());


    //获取文件的路径
    String path2 = f.getPath();
    System.out.println(“f.getPath() —->”+path2);

    String absolutePath = f.getAbsolutePath();
    System.out.println(“f.getAbsolutePath()—->”+absolutePath);

    //获取父文件的路径 (一定是一个 目录)
    String parent = f.getParent();
    System.out.println(“f.getParent()——>”+parent);

    //获取父文件对象 (目录)
    File parentFile = f.getParentFile();

    }
    }public class TestFile03 {


    public static void main(String[] args) {

    String path = “E:/woniu/57/JavaSE/day01”;
    File file = new File(path);
    if(file.isDirectory()){
    //获取此目录下所有文件的名字
    String[] list = file.list();

    for(String s :list){
    System.out.println(s);
    }
    }

    System.out.println(“=======”);
    //获取目录下 所有的文件对象
    if(file.isDirectory()){
    File[] listFiles = file.listFiles();

    for(File f :listFiles){
    System.out.println(f.getName());
    }
    }

    System.out.println(“==============”);
    String path1 = “E:/wugd” ;
    //创建和这个文件夹
    File f1 = new File(path1);
    if(!f1.exists()){
    //创建文件夹
    f1.mkdir();
    }

    String path2 = “E:/wugd/a/b/c/d”;
    File f2 = new File(path2);
    if(!f2.exists()){
    //创建多级 文件夹
    f2.mkdirs();
    }

    //打印 某一个 目录下的 所有 文件及 文件夹的名字 例如 :E:/woniu/57/JavaSE

    }
    }

    • public long length() 文件的大小 按字节计算
    • public boolean isFile() 判断文件对象 是不是一个文件
    • public boolean isDirectory() 判断文件对象 是不是一个目录或者文件夹
    • public boolean exists() 判断文件是否存在
    • public boolean createNewFile() throws IOException 创建一个新的文件
    • public boolean mkdir() 创建一个一级文件夹
    • public boolean mkdirs() 创建多级文件夹
    • public boolean delete() 删除文件
    • public void deleteOnExit() 虚拟机停止的才删除
    • public String getName() 获取文件的名字
    • public String getPath() 获取文件的路径
    • public String getAbsolutePath() 获取文件的绝对路径
    • public String getParent() 返回父文件的路径
    • public boolean renameTo(File dest) 文件重命名
    • public String[] list() 返回文件夹下所有文件的 名字
    • public File[] listFiles() 返回文件夹下的 所有文件对象
    • public boolean isHidden() 判断文件是否为隐藏文件
    • public long lastModified() 返回文件最近修改时间
    • public File getParentFile() 返回父文件对象

      递归打印文件的名字

      public class TestPrintFileName {
      public static void main(String[] args) {
      String path = “E:/woniu/57/JavaSE” ;
      File f = new File(path);

      printFileName(f,0);
      }

      static void printFileName(File f , int level){

      for(int i=0;i System.out.print(“ “);
      }

      System.out.println(f.getName());

      //判断是否是 目录
      if(f.isDirectory()){
      File[] listFiles = f.listFiles();
      level++ ;

      for(File file :listFiles){
      printFileName(file,level);
      }
      }
      }
      }