JavaSE-17.1【File类,File类的构造方法、创建功能、判断和获取功能、删除功能】

复制代码
 1 package day8.lesson1;
 2 
 3 import java.io.File;
 4 
 5 /*
 6 1 File类
 7 
 8 1.1 File类概述和构造方法
 9 
10     File类介绍
11         它是文件和目录路径名的抽象表示
12         文件和目录是可以通过File封装成对象的
13         对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以
14         是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
15 
16     File类的构造方法
17         File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
18         File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例
19         File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例
20 
21  */
22 public class FileDemo1 {
23     public static void main(String[] args) {
24         File f1 = new File("D:\\Workspace-java\\idea\\Workspaces\\itheima-javase\\stage2\\src\\day8\\lesson1\\java.txt");
25         System.out.println(f1);
26         //D:\Workspace-java\idea\Workspaces\itheima-javase\stage2\src\day8\lesson1\java.txt
27         //没输出对象地址,说明File类重写了toString()
28 
29         File f2 = new File("D:\\Workspace-java\\idea\\Workspaces\\itheima-javase\\stage2\\src\\day8\\lesson1", "java.txt");
30         System.out.println(f2);
31         //D:\Workspace-java\idea\Workspaces\itheima-javase\stage2\src\day8\lesson1\java.txt
32 
33         File f3 = new File("D:\\Workspace-java\\idea\\Workspaces\\itheima-javase\\stage2\\src\\day8\\lesson1");
34         File f4 = new File(f3, "java.txt");
35         System.out.println(f4);
36         //D:\Workspace-java\idea\Workspaces\itheima-javase\stage2\src\day8\lesson1\java.txt
37     }
38 }
复制代码
复制代码
 1 package day8.lesson1;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /*
 7 
 8 1.2 File类创建功能
 9 
10     public boolean createNewFile()  当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
11     public boolean mkdir()          创建由此抽象路径名命名的目录
12     public boolean mkdirs()         创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
13  */
14 public class FileDemo2 {
15     public static void main(String[] args) throws IOException {
16         String base_path = "D:\\Workspace-java\\idea\\Workspaces\\itheima-javase\\stage2\\src\\day8\\lesson1\\";
17 
18         //需求1:在当前目录下创建一个文件java.txt
19         File f1 = new File(base_path + "java.txt");
20         System.out.println(f1.createNewFile());
21         //注意:createNewFile()需要抛出异常,alt+回车生成throws或者手动try-catch也行
22         //若文件不存在,则创建文件,返回true
23         //若文件存在,则创建失败,返回false
24 
25         //需求2:在当前目录下创建一个目录JavaSE
26         File f2 = new File(base_path + "javase");
27         System.out.println(f2.mkdir());
28         //若目录不存在,则创建目录,返回true
29         //若目录存在,则创建失败,返回false
30 
31         //需求3:在当前目录下创建一个多级目录JavaWEB\\HTML
32         File f3 = new File(base_path + "javaweb\\html");
33 //        System.out.println(f3.mkdir()); //false mkdir()无法创建多级目录
34         System.out.println(f3.mkdirs());
35         //若目录不存在,则创建目录,返回true
36         //若目录存在,则创建失败,返回false
37 
38         //需求4:在当前目录下创建一个文件javase.txt
39         File f4 = new File(base_path + "javase.txt");
40 //        System.out.println(f4.mkdir()); //true
41         //注意:要用f4调用的方法来判断要创建文件还是目录,只看给出的路径字符串不靠谱
42 //        System.out.println(f4.createNewFile()); //false
43         //注意:当前目录下已存在"javase.txt",即使它是一个目录,也不允许再创建同名文件
44         //总结:创建文件时只能用.createNewFile(),创建目录是只能用.mkdir()或.mkdirs()
45     }
46 }
复制代码
复制代码
 1 package day8.lesson1;
 2 
 3 import java.io.File;
 4 
 5 /*
 6 1.3 File类判断和获取功能
 7 
 8     判断功能
 9         public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
10         public boolean isFile() 测试此抽象路径名表示的File是否为文件
11         public boolean exists() 测试此抽象路径名表示的File是否存在
12 
13     获取功能
14         public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
15         public String getPath() 将此抽象路径名转换为路径名字符串
16         public String getName() 返回由此抽象路径名表示的文件或目录的名称
17 
18         public String[] list() 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
19         public File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组
20  */
21 public class FileDemo3 {
22     public static void main(String[] args) {
23         String base_path = "D:\\Workspace-java\\idea\\Workspaces\\itheima-javase\\"; //当前项目根目录
24 
25         File f1 = new File("stage2\\src\\day8\\lesson1\\java.txt");
26         System.out.println(f1.isDirectory()); //false
27         System.out.println(f1.isFile()); //true
28         System.out.println(f1.exists()); //true
29 
30         System.out.println(f1.getAbsoluteFile());
31         //绝对路径 D:\Workspace-java\idea\Workspaces\itheima-javase\stage2\src\day8\lesson1\java.txt
32         System.out.println(f1.getPath());
33         //抽象路径 stage2\src\day8\lesson1\java.txt
34         System.out.println(f1.getName()); //java.txt
35 
36         System.out.println();
37         File f2 = new File("stage2\\src\\day8\\lesson1");
38 
39         String[] strArr = f2.list();
40         for (String s: strArr){
41             System.out.println(s);
42         }
43         /*
44         FileDemo1.java
45         FileDemo2.java
46         FileDemo3.java
47         FileDemo4.java
48         java.txt
49         javase
50         javase.txt
51         javaweb
52          */
53 
54         System.out.println();
55         File[] fileArr = f2.listFiles();
56         for (File f: fileArr){
57 //            System.out.println(f);
58 //            System.out.println(f.getName()); //效果同上f2.list()遍历
59             if(f.isFile()){
60                 System.out.println(f.getName()); //只输出文件名称,目录不输出
61             }
62         }
63         /*
64         stage2\src\day8\lesson1\FileDemo1.java
65         stage2\src\day8\lesson1\FileDemo2.java
66         stage2\src\day8\lesson1\FileDemo3.java
67         stage2\src\day8\lesson1\FileDemo4.java
68         stage2\src\day8\lesson1\java.txt
69         stage2\src\day8\lesson1\javase
70         stage2\src\day8\lesson1\javase.txt
71         stage2\src\day8\lesson1\javaweb
72 
73         FileDemo1.java
74         FileDemo2.java
75         FileDemo3.java
76         FileDemo4.java
77         java.txt
78          */
79 
80     }
81 }
复制代码
复制代码
 1 package day8.lesson1;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /*
 7 1.4 File类删除功能
 8 
 9     public boolean delete() 删除由此抽象路径名表示的文件或目录
10 
11     绝对路径和相对路径的区别
12         绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\\itcast\\java.txt
13         相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt
14  */
15 public class FileDemo4 {
16     public static void main(String[] args) {
17         /*
18         项目路径
19             D:\Workspace-java\idea\Workspaces\itheima-javase
20         模块路径
21             D:\Workspace-java\idea\Workspaces\itheima-javase\stage1
22             D:\Workspace-java\idea\Workspaces\itheima-javase\stage2
23         包路径
24             D:\Workspace-java\idea\Workspaces\itheima-javase\stage1\src\day?
25             D:\Workspace-java\idea\Workspaces\itheima-javase\stage2\src\day?
26         day?下的目录==子包
27          */
28 
29         //需求1:在当前模块目录下创建java.txt文件
30         File f1 = new File("stage2\\java.txt"); //与stage2下的src文件夹同级
31 //        try {
32 //            System.out.println(f1.createNewFile());
33 //        } catch (IOException e) {
34 //            e.printStackTrace();
35 //        }
36 
37         //需求2:删除当前模块目录下的java.txt文件
38 //        System.out.println(f1.delete());
39 
40         //需求3:在当前模块目录下创建itcast目录
41         File f2 = new File("stage2\\itcast");
42 //        System.out.println(f2.mkdir());
43 
44         //需求4:删除当前模块目录下的itcast目录
45 //        System.out.println(f2.delete());
46 
47         //需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txt
48         File f3 = new File("stage2\\itcast");
49 //        System.out.println(f3.mkdir());
50         File f4 = new File("stage2\\itcast\\java.txt"); //若路径不存在时,直接创建文件,会报异常
51 //        try {
52 //            System.out.println(f4.createNewFile());
53 //        } catch (IOException e) {
54 //            e.printStackTrace();
55 //        }
56 
57         //需求6:删除当前模块下的目录itcast
58 //        System.out.println(f3.delete()); //false  目录下存在内容(子目录/文件)时,直接删目录删不掉
59         // 需要先清空目录下内容才能删该目录,即只能删除不包含内容的目录
60 
61 //        System.out.println(f4.delete());
62 //        System.out.println(f3.delete());
63     }
64 }
复制代码

 

posted @   yub4by  阅读(79)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示