File类的使用

File类

一、对File类的理解

  1. File类是一个对象,代表一个文件或者是一个文件目录。
  2. File类声明在java.io包下。
  3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
  4. File类的对象会常用在作为参数传递到流的构造器中,指明读或写的终点。

二、File的实例化

1.绝对路径和相对路径的理解

  • 绝对路径:绝对路径就是从盘开始文件或文件目录的路径(如:E:\学习\IDEA练习)
  • 相对路径:相对路径就是在指定的路径下的文件或文件夹(如:\IDEA练习)

2.常用构造器

File(String filePath):通过路径创建File

File(String parentPath,String childPath):通过父路径和子路径创建file

File(File parentPath,String childPath):通过父file和子路径创建file

具体实现如下代码:

//通过路径创建File
File f1=new File("E:\\学习\\io流操作文件夹\\1.txt");
//通过父路径和子路径File
File f2=new File("E:\\学习\\io流操作文件夹","javase");
//父File和子路径创建File
File fatherFile=new File("E:\\学习\\io流操作文件夹");
File childFile=new File(fatherFile,"2.txt");//"E:\学习\io流操作文件夹\2.txt"

3、FIle类的常用方法

createNewFile():创建文件,存在不创建

mkdir():创建单级文件夹

mkdirs():创建多级文件夹

具体使用如下:

File file=new File("E:\\学习\\io流操作文件夹"+File.separator+"1.txt");
//创建文件
file.createNewFile();

File folder=new File("E:\\学习\\io流操作文件夹\\demo");
//创建单级目录
System.out.println(folder.mkdir());//不存在创建返回true,存在返回false

File folder2=new File("E:\\学习\\io流操作文件夹\\text\\new");
//创建多级目录
folder2.mkdirs();

delete():删除File对象,只能删除文件或者空的文件夹

具体使用如下:

File folder2=new File("E:\\培训\\io流操作文件夹\\text\\new");
    //创建多级目录
    folder2.mkdirs();
    //删除文件
    file.delete();
    //删除demo(空目录)
    folder.delete();
    //删除text(非空目录不能删除)
    folder2.delete();

getAbsoultPath(): 获取绝对路径

getPath(): 将此File转换为路径名字符串,获取的构造方法中传递的路径

getName(): 获取文件或目录的名称名称

getParent(): 获取上层文件目录路径

length(): 获取字节数,文件夹没大小概念的

lastModified(): 获取最后一次修改时间的毫秒值

endsWith(): 获取后缀元素 如:fileName.endsWith(".java")//判断后缀是否是.java的

具体使用如下:

public static void main(String[] args) throws IOException {
    File file=new File("io\\a.txt");
    if(!file.exists()){
      file.createNewFile();
    }
    //获取绝对路径
    System.out.println(file.getAbsolutePath());//E:\培训\上课代码\io\a.txt
    //判断是否是文件夹
    System.out.println(file.isDirectory());//F
    //判断是否是文件
    System.out.println(file.isFile());//T
    //判断是否可读
    System.out.println(file.canRead());//T
    //判断是否可写
    System.out.println(file.canWrite());//T
    //判断是否隐藏
    System.out.println(file.isHidden());//F
    //获取构造方法中传递的路径
    System.out.println(file.getPath());//io\a.txt
    //获取文件名称
    System.out.println(file.getName());//a.txt
    //获取文件上层目录路径
    System.out.println(file.getParent());//io
  }

String[] list(): 获取目录下所文件和文件夹的名称

File[] listFiles(): 获取目录下所文件和文件夹的File对象

具体使用如下:

//File[] listFiles()方法的使用
private static void demo2() {
    File file=new File("C:\\Users\\mk\\Desktop\\demo");
    //获取指定目录下所有文件或文件夹的File对象
    File[] files=file.listFiles();
    for (File f:files){
      //输出绝对路径
      System.out.println(f.getAbsolutePath());
    }
  }
//String[] list()方法的使用
private static void demo1() {
    File file=new File("C:\\Users\\mk\\Desktop\\demo");
    //获取指定目录下所有文件或文件夹的名称
    String[] names=file.list();
    for(String name:names){
      System.out.println(name);
    }
  }

String[] list(filenameFilter): 通过指定的文件名称过滤器将不符合条件的文件过滤掉

File[] listFiles(filenameFilter): 通过指定的文件名称过滤器将不符合条件的文件过滤掉

File[] listFiles(FileFilter filter): 抽象方法:用来过滤文件的方法

String[] list(filenameFilter)的使用:

//指定后缀,将其所有文件输出到控制台
File folder=new File(".");//在主方法里生成的
private static void demo1(File folder) {
    String[] names=folder.list(new FilenameFilter() {
      @Override
      public boolean accept(File dir, String name) {
        File file=new File(dir,name);
        //判断file是否是文件
        if(file.isDirectory()){
          demo1(file);
          return false;
        }
        //文件是否是.java文件
        return name.endsWith(".java");
      }
    });
    for(String name:names){
      System.out.println(name);
    }
  }

File[] listFiles(filenameFilter)的使用:

private static void demo2(File folder) {
    File[] files=folder.listFiles(new FilenameFilter() {//实例化一个过滤器
      @Override
      public boolean accept(File dir, String name) {
        File file=new File(dir,name);
        if(file.isDirectory()){
          return true;
        }
        return name.endsWith(".java");
      }
    });
    for (File name:files){
      if(name.isDirectory()){//如果name是一个文件夹,递归
        demo2(name);
      }else {
        System.out.println(name.getName());
      }
    }
  }

File[] listFiles(FileFilter filter)的使用:

//删除指定的目录
private static void deleteDer(File folder) {
    File[] files=folder.listFiles();
    //判断当前的目录是否为空
    if(files==null){
      folder.delete();
    }else {
      //如果不是,就先删除目录下的文件
      for (File file:files){
        if(file.isFile()){
          file.delete();
        }else {
          //如果不是文件的话,删除文件夹
          deleteDer(file);
        }
      }
      //最后删除目录
      folder.delete();
    }
  }

renameTo(File dest):将一个File对象重名名为指定的File对象

//将文件重命名
private static void demo1() {
    File file=new File("io\\a.txt");
    File dext=new File("io\\aaa.txt");
    file.renameTo(dext);
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值