Java基础系列34-file类别

x33g5p2x  于2021-12-18 转载在 其他  
字(4.4k)|赞(0)|评价(0)|浏览(1107)

一. File类的概述

File :文件和目录路径名的抽象表示形式
  也就是说文件和目录(文件夹)是可以通过File封装成对象的

File类的构造方法

  1. //a. 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
  2. File(String pathname)
  3. //b. 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
  4. File(String parent, String child)
  5. //c. 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实
  6. File(File parent, String child)

代码:

  1. package Java_study;
  2. import java.io.File;
  3. /**
  4. *
  5. * @author 只是甲
  6. * @date 2021-07-15
  7. * @remark File类的构造方法
  8. *
  9. */
  10. public class file1 {
  11. public static void main(String[] args) {
  12. //以下的f1,f2,f3做的是同样的事情,就是把d:\\b.txt转换为了一个File对象
  13. //a. File(String pathname)
  14. File f1 = new File("d:\\b.txt");
  15. //b. File(String parent, String child)
  16. File f2 = new File("d:","b.txt");
  17. //c. File(File parent, String child)
  18. File f3_path = new File("d:");
  19. File f3 = new File(f3_path, "b.txt");
  20. }
  21. }

二. File类的方法

2.1 创建

方法摘要

  1. //a.创建文件 如果文件不存在,创建文件并返回true 如果文件存在,创建文件失败并返回false
  2. public boolean createNewFile():
  3. //b.创建目录 如果目录不存在,创建目录并返回true 如果目录存在,创建目录失败并返回false
  4. public boolean mkdir()
  5. //c.创建多级目录
  6. public boolean mkdirs()

代码:

  1. package Java_study;
  2. import java.io.File;
  3. import java.io.IOException;
  4. /**
  5. *
  6. * @author 只是甲
  7. * @date 2021-07-15
  8. * @remark File类方法--创建
  9. *
  10. */
  11. public class file2 {
  12. public static void main(String[] args) {
  13. //需求1:我要在d盘目录下创建一个文件a.txt
  14. File f1 = new File("D:\\a.txt");
  15. try {
  16. System.out.println("1.createNewFile:" + f1.createNewFile());
  17. } catch (IOException e) {
  18. System.out.println("IO异常,创建失败");
  19. }
  20. //需求2:我要在d盘目录下创建一个目录bb
  21. File f2 = new File("D:" + File.separator + "bb");
  22. System.out.println("2.mkdir:" + f2.mkdir());
  23. //需求3:我要在d盘目录下创建一个多级目录cc\\dd
  24. File f3 = new File("D:\\cc" + File.separator + "dd");
  25. System.out.println("3.mkdirs:" + f3.mkdirs());
  26. //需求4:我要在d盘目录下创建一个文件ee\\f.txt
  27. File f4_path = new File("D:\\ee");
  28. File f4_file = new File(f4_path, "f.txt");
  29. System.out.println("4.mkdir:" + f4_path.mkdirs());
  30. try {
  31. System.out.println("4.createNewFile:" + f4_file.createNewFile());
  32. } catch (IOException e) {
  33. System.out.println("IO异常,创建失败");
  34. }
  35. }
  36. }

测试记录:

  1. 1.createNewFile:true
  2. 2.mkdir:true
  3. 3.mkdirs:true
  4. 4.mkdir:true
  5. 4.createNewFile:true

2.2 删除

相对路径&绝对路径
 绝对路径:是以盘符开始的路径。d:\aa\b.txt
 相对路径:不以盘符开始。相对于当前的项目而言,在项目的目录下。如何显示出来呢?刷新项目就可以了

方法摘要

  1. public boolean delete():删除文件和目录

注意事项
 如果一个目录中有内容(目录,文件),就不能直接删除。
 应该先删除目录中的内容,最后才能删除目录。

2.2.1 删除文件

代码:

  1. package Java_study;
  2. import java.io.File;
  3. import java.io.IOException;
  4. /**
  5. *
  6. * @author 只是甲
  7. * @date 2021-07-15
  8. * @remark File类方法--删除
  9. *
  10. */
  11. public class file3 {
  12. public static void main(String[] args) throws InterruptedException, IOException{
  13. //需求1. createNewFile:相对路径创建一个文件a.txt.
  14. File f1 = new File("a.txt");
  15. System.out.println("1.创建一个文件a.txt: " + f1.createNewFile());
  16. //需求2. mkdir+createNewFile:相对路径创建一个文件cc\\d.txt
  17. File f2_path = new File("cc");
  18. File f2_file = new File("cc" + File.separator + "a.txt");
  19. System.out.println("3.创建一个目录cc:" + f2_path.mkdirs());
  20. System.out.println("3.创建一个文件cc\\d.txt: " + f2_file.createNewFile());
  21. //等待10秒
  22. File projectPath = new File("");//参数为空,表示当前项目根目录
  23. System.out.println("全部创建完毕,请进入 " + projectPath.getAbsolutePath() + " 目录查看文件,15秒后开始删除");
  24. Thread.sleep(15000);//线程等待15秒
  25. //需求4.delete:相对路径删除a.txt这个文件
  26. File f4 = new File("a.txt");
  27. System.out.println("删除a.txt:" + f4.delete());
  28. //需求5. delete: 相对路径删除cc这个目录(先删除d.txt这个文件,再删除cc这个目录)
  29. File f5_file = new File("cc" + File.separator + "a.txt");
  30. File f5_path = new File("cc");
  31. System.out.println("删除cc\\a.txt文件: " + f5_file.delete() );
  32. System.out.println("删除cc目录: " + f5_path.delete());
  33. }
  34. }

测试记录:

  1. 1.创建一个文件a.txt: true
  2. 3.创建一个目录cc:true
  3. 3.创建一个文件cc\d.txt: true
  4. 全部创建完毕,请进入 D:\Users\Administrator\eclipse-workspace\Java_study 目录查看文件,15秒后开始删除
  5. 删除a.txttrue
  6. 删除cc\a.txt文件: true
  7. 删除cc目录: true

2.2.2 遍历File目录,删除所有目录下文件

代码:

  1. package Java_study;
  2. import java.io.File;
  3. import java.io.IOException;
  4. /**
  5. *
  6. * @author 只是甲
  7. * @date 2021-07-15
  8. * @remark 遍历File目录,删除所有文件
  9. *
  10. */
  11. public class file4 {
  12. public static void main(String[] args) throws InterruptedException, IOException {
  13. File f_path = new File("D:\\test");
  14. deleteFile(f_path);
  15. }
  16. public static void deleteFile(File f) {//传一个File对象f进去 因为要调用其方法
  17. if (f != null) {//判断f数据是否为空 因为可能有人会传null值进来
  18. if (f.exists()) {//判断该抽象路径的目录和文件是否存在
  19. if (f.isDirectory()) {//判断是否是目录
  20. File[] listFiles = f.listFiles();//调用listFiles()方法返回一个File对象组成的数组集合
  21. if (listFiles == null) {//如果该数组为Null说明没有文件和目录对象 就是一个空的文件夹
  22. f.delete();//直接删除
  23. } else {//不为空的文件夹
  24. for (File file : listFiles) {//遍历该集合
  25. deleteFile(file);//遍历到的每个File对象传入demo()方法
  26. }
  27. f.delete();//最后将这个不为空的文件夹删除
  28. }
  29. } else {//不是目录可能是是文件或者不存在
  30. f.delete();//直接删除
  31. }
  32. } else {//为Null
  33. return;//结束方法调用
  34. }
  35. }
  36. }
  37. }

参考:

  1. https://blog.csdn.net/qq_43529621/article/details/116603510
上一篇:异常
下一篇:IO流

相关文章