java之File类

1.File类概述:

java.io.File类是文件和目录路径名称的抽象表示,主要用于文件和目录的创建、查找和删除等操作

2.File类的构造方法:

      - public File(String pathname):通过将给定的路径名 字符串转换为抽象路径名 来创建新的File实例, ps:"D:\aaa"
      - public File(String parent,String child):从父路径 字符串 和 子路径 字符串 创建新的File实例
      - public File(File parent,String child):从父抽象路径名 和子路径名 字符串 创建新的File实例

3.注意事项:

      1。一个File对象代表硬盘中的一个文件或者目录
      2.无论该路径下是否存在文件或者目录,都不影响File对象的创建

// 创建File对象表示 D:\aaa\a.txt ,路径斜杠在程序中需要进行转义,转义就是在特殊字符号前面加上“\”即可
File file1 = new File("D:\\aaa\\a.txt");
File file2 = new File("D:\\aaa","a.txt");
File parent = new File("D:\\aaa");
File file3 = new File(parent,"a.txt");
System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
System.out.println("=====================");
// 创建File对象表示“D:\aaa\bbb”文件夹路径
File file4 = new File("D:\\aaa\\bbb");
File file5 = new File("D:\\aaa","bbb");
File file6 = new File(parent,"bbb");
System.out.println(file4);
System.out.println(file5);
System.out.println(file6);
System.out.println("====================");
File file7 = new File("D:\\aaa\\b.txt"); //b.txt 该文件不存在
File file8 = new File("D:\\aaa\\ccc"); //ccc该文件夹不存在
System.out.println(file7);
System.out.println(file8);

4.绝对路径和相对路径

      - 绝对路径:从盘符开始的路径,这是一个完整的路径
      - 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中最常使用的【掌握】
生活中:你和朋友在 启迪漕河泾 上班
      你告诉你朋友你在哪里:
          - 绝对路径:xx市xx区xx路H栋301
          - 相对路径:           H栋301
程序中:
      - 决定路径  D:\myprojects\javase0806\day12_File类与递归&IO流&字符流和字节流\resources\images\a.jpg
      - 相对路径  day12_File类与递归&IO流&字符流和字节流\resources\images\a.jpg

//决定路径
File file1 = new File("D:\\myprojects\\javase0806\\day12_File类与递归&IO流&字符流和字节流\\resources\\images\\a.jpg");
//相对路径
File file2 = new File("day12_File类与递归&IO流&字符流和字节流\\resources\\images\\a.jpg");
System.out.println(file1);
System.out.println(file2);

5.获取功能的方法

获取功能的方法:
      - public String getAbsolutePath():返回File的绝对路径名 字符串
      - public String getPath():将此File转换为路径名 字符串,获取构造方法(就是获取你构造方法时候放入的路径)
      - public String getName():返回此File表示的文件或者目录的名称
      - public long length():返回此File表示的文件的字节大小,不能获取目录的字节大小

// 创建一个File对象,表示day12项目里的 resources\images\a.jpg
File file1= new File("D:\\myprojects\\javaSE0806\\day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a.jpg");
File file2= new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a.jpg");
System.out.println("file1的绝对路径:"+file1);
System.out.println("file2的构造路径:"+file2);
System.out.println("file1的文件名称:"+file1.getName());
System.out.println("file1的文件大小:"+file1.length());
System.out.println("=====================");
// 创建一个File对象,表示day12项目里的 resources\images\a.jpg
File file3= new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images");
System.out.println("file3的构造路径:"+file3);
System.out.println("file3的文件名称:"+file3.getName());
System.out.println("file3的文件大小:"+file3.length()); // 0,File 对象表示目录的话,返回值为未指定

6.判断功能的方法

判断功能的方法:
      - public boolean exists(): 此File标识的文件或目录是否实际存在
      - public boolean isDirectory():此File标识的是否为目录
      - public boolean isFile(): 此File标识的是否为文件

// 创建一个真实的文件路径
File file1 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a.jpg");
System.out.println("file1表示的文件是否真实存在:"+file1.exists());//true
System.out.println("file1表示的文件是否是文件夹:"+file1.isDirectory());//false
System.out.println("file1表示的文件是否是文件:"+file1.isFile());//true
// 创建一个真实的文件路径
File file2 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images");
System.out.println("file2表示的文件是否真实存在:"+file2.exists());//true
System.out.println("file2表示的文件是否是文件夹:"+file2.isDirectory());//true
System.out.println("file2表示的文件是否是文件:"+file2.isFile());//fales
// 创建一个不真实的文件路径
File file3 = new File("day12_File类与递归&IO流%字符流和字节流\\resource\\images\\a.jpg");
System.out.println("file3表示的文件是否真实存在:"+file3.exists());//false
System.out.println("file3表示的文件是否是文件夹:"+file3.isDirectory());//false
System.out.println("file3表示的文件是否是文件:"+file3.isFile());//false
// 创建一个不真实的文件夹路径
File file4= new File("day12_File类与递归&IO流%字符流和字节流\\resource\\images");
System.out.println("file4表示的文件是否真实存在:"+file4.exists());//false
System.out.println("file4表示的文件是否是文件夹:"+file4.isDirectory());//false
System.out.println("file4表示的文件是否是文件:"+file4.isFile());//false

7.创建删除功能的方法

- public boolean createNewFile(): 当 且仅 当不存在该名称的文件时,创建一个新的空文件
- public boolean mkdir():创建有File表示的目录
- public boolean mkdirs():创建有File表示的目录,包括任何必须但不存在的父目录
- public boolean delete():删除有此File表示的文件或者目录,只能删除文件或者空文件夹,不能删除非空文件夹

// 创建文件
File file1 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a.txt");
System.out.println("是否创建成功:"+file1.createNewFile());
File file2 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\aaa");
System.out.println("是否创建成功:"+file2.createNewFile());    //创建了一个无法标识的文件
//创建文件夹
File file3 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\aaa");
System.out.println("是否创建成功:"+file3.mkdir());
//创建文件夹
File file4 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\bbb.txt");
System.out.println("是否创建成功:"+file4.mkdir());    //bbb.txt
//创建多级目录
File file5 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a1\\b1\\c1");
System.out.println("使用mkdir的方式创建多级目录:"+file5.mkdir());    //false
System.out.println("使用mkdir的方式创建多级目录:"+file5.mkdirs());   //true
//删除一个文件
File file6 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\a.txt");
System.out.println("删除a.txt是否成功:"+file6.delete());        //true
//删除空文件夹
File file7 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\bbb.txt");
System.out.println("删除空文件夹,文件夹是否删除成功:"+file7.delete());    //true
//删除非空文件夹
File file8 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images\\bbb");    //bbb文件夹下有个a.txt
System.out.println("删除非空文件夹,文件夹是否删除成功:"+file8.delete());  //false
/*
* delete方法,如果File表示目录,则目录中必须为空才可以删除
* */

8.File类遍历目录的方法:

      - public String[] list(): 返回一个String数组,表示该File目录中的所有子文件或目录的名称
      - public File[] listFiles(): 返回一个File数组,表示File目录中的所有的子文件或者子目录的路径

// 创建File对象,表示文件夹路径
File file1 = new File("day12_File类与递归&IO流%字符流和字节流\\resources\\images");
// 获取file1路径下的所有子文件和子文件夹的名称
String[] list = file1.list();
for (String s : list) {
    System.out.println(s);
}
System.out.println("======================================");
// 获取file1路径下的所有子文件和子文件夹的路径
File[] list2 = file1.listFiles();
for (File s : list2) {
    System.out.println(s);
}
// 访问缓存文件,或者如果该文件夹限制了访问权限,那么,访问就是null
File file3 = new File("d:\\System Volume Information");
String[] list1 = file3.list();
File[] files = file3.listFiles();
System.out.println(list1+","+files); // null ,null
// 如果遍历的话,会报异常,一般遍历之前,为了代码的健壮性,都会进行判断是否为null
if(list1 != null){
    for (String s : list1) {
        System.out.println(s);// 直接对没有访问权限的文件夹遍历的话会 NullPointerException异常
    }
}
// 同理,如果文件夹路径不存在,返回也是null,但是遍历同样会报错:空指针异常
File file4 = new File("d:\\ddadada");
String[] list4 = file4.list();
File[] files4 = file4.listFiles();
System.out.println(list4+","+files4); //null, null

总结:调用listFiles()方法的File对象,表示的必须是实际存在的路径否则返回null,无法进行遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值