网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
+ - [1. 显示文件及文件夹内容](#1__247)
- [2. 统计文件夹大小](#2__265)
- [3. 复制文件夹](#3__282)
- [4. 剪切文件夹](#4__323)
- [5. 删除文件夹](#5__369)
- [6. 复制指定类型文件](#6__390)
前言
新星计划,等你来造,一起学习进步!
7月3日-7月15日期间,完成计划任务,完成打卡赢好礼,活动报名链接如下:点击跳转
活动奖励:
❀【新秀奖】新注册用户发布第一篇文章(500字以上)获得电子【新秀勋章】;
❀【基础奖】完成任务挑战用户可获专属电子勋章(潜力新星)+抽奖机会(百分百中奖)
❀【特别奖】各导师评选团队综合top5,获实力新星实体证书/实体奖牌红色款二选一+APP作者推荐关注+实力
一、File类概述
(1)
java.io.File
类:文件和文件目录路径的抽象表示形式,与平台无关
(2)
File
类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO
流来完成。
(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个
File
对象,但是Java程序中的一个File
对象,可能没有一个真实存在的文件或目录。
(4)
File
对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。
二、File类的使用
1. 绝对路径 vs 相对路径
(1)绝对路径:是一个固定的路径,从盘符开始
(2)相对路径:是相对于某个位置开始
main()
方法中的相对路径是相对于当前工程- 单元测试方法中的相对路径是相对于当前模块
2. 路径分隔符
(1) 路径中的每级目录之间用一个路径分隔符隔开。
(2)路径分隔符和系统有关:
windows
和DOS
系统默认使用"\"
来表示- UNIX和URL使用
"/"
来表示
(3) Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:
public static final String separator
:根据操作系统,动态的提供分隔符。
File file1 = new File("d:\\atguigu\\info.txt");
File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");
File file3 = new File("d:/atguigu");
3. 静态成员变量
静态成员变量 | 描述 |
---|---|
public static String pathSeparator | 系统中多个路径的分隔符 windows; |
public static String separator | 系统中一个路径中多个名称之间的分隔符号 windows\ |
3. 常用构造器
构造器 | 描述 |
---|---|
public File(String pathname) | 以pathname 为路径创建File 对象,可以是绝对路径或者相对路径,如果pathname 是相对路径,则默认的当前路径在系统属性user.dir 中存储。 |
public File(String parent,String child) | 以parent 为父路径,child 为子路径创建File对象。 |
public File(File parent,String child) | 根据一个父File 对象和子文件路径创建File 对象 |
代码演示:
//构造器1
File file1 = new File("hello.txt");//相对于当前module
File file2 = new File("D:\\workspace\_idea1\\JavaSenior\\day08\\he.txt");
System.out.println(file1);
System.out.println(file2);
//构造器2:
File file3 = new File("D:\\workspace\_idea1","JavaSenior");
System.out.println(file3);
//构造器3:
File file4 = new File(file3,"hi.txt");
System.out.println(file4);
}
4. 常用方法
4.1 获取功能
方法 | 描述 |
---|---|
public String getAbsolutePath() | 获取绝对路径 |
public String getPath() | 获取路径 |
public String getName() | 获取名称 |
public String getParent() | 获取上层文件目录路径。若无,返回null |
public long length() | 获取文件长度(即:字节数)。不能获取目录的长度。 |
public long lastModified() | 获取最后一次的修改时间,毫秒值 |
public String[] list() | 获取指定目录下的所有文件或者文件目录的字符串数组 |
public File[] listFiles() | 获取指定目录下的所有文件或者文件目录的File对象数组 |
代码演示:
@Test
public void test2(){
File file1 = new File("hello.txt");
File file2 = new File("d:\\io\\hi.txt");
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getPath());
System.out.println(file1.getName());
System.out.println(file1.getParent());
System.out.println(file1.length());
System.out.println(new Date(file1.lastModified()));
System.out.println();
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getPath());
System.out.println(file2.getName());
System.out.println(file2.getParent());
System.out.println(file2.length());
System.out.println(file2.lastModified());
}
@Test
public void test3(){
File file = new File("D:\\workspace\_idea1\\JavaSenior");
String[] list = file.list();
for(String s : list){
System.out.println(s);
}
System.out.println();
File[] files = file.listFiles();
for(File f : files){
System.out.println(f);
}
}
4.2 重命名功能
方法 | 描述 |
---|---|
public boolean renameTo(File dest) | 把文件重命名为指定的文件路径 |
代码演示:
@Test
public void test4(){
File file1 = new File("hello.txt");
File file2 = new File("D:\\io\\hi.txt");
boolean renameTo = file2.renameTo(file1);
System.out.println(renameTo);
}
4.3 判断功能
方法 | 描述 |
---|---|
public boolean isDirectory() | 判断是否是文件目录 |
public boolean isFile() | 判断是否是文件 |
public boolean exists() | 判断是否存在 |
public boolean canRead() | 判断是否可读 |
public boolean canWrite() | 判断是否可写 |
public boolean isHidden() | 判断是否隐藏 |
代码演示:
@Test
public void test5(){
File file1 = new File("hello.txt");
file1 = new File("hello1.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
File file2 = new File("d:\\io");
file2 = new File("d:\\io1");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());
}
4.4 创建功能
方法 | 描述 |
---|---|
public boolean createNewFile() | 创建文件。若文件存在,则不创建,返回false |
public boolean mkdir() | 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 |
public boolean mkdirs() | 创建文件目录。如果上层文件目录不存在,一并创建 |
注意事项: 如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。
代码演示:
@Test
public void test6() throws IOException {
File file1 = new File("hi.txt");
if(!file1.exists()){
//文件的创建
file1.createNewFile();
System.out.println("创建成功");
}else{//文件存在
file1.delete();
System.out.println("删除成功");
}
}
@Test
public void test7(){
//文件目录的创建
File file1 = new File("d:\\io\\io1\\io3");
boolean mkdir = file1.mkdir();
if(mkdir){
System.out.println("创建成功1");
}
File file2 = new File("d:\\io\\io1\\io4");
boolean mkdir1 = file2.mkdirs();
if(mkdir1){
System.out.println("创建成功2");
}
//要想删除成功,io4文件目录下不能有子目录或文件
File file3 = new File("D:\\io\\io1\\io4");
file3 = new File("D:\\io\\io1");
System.out.println(file3.delete());
}
}
4.5 删除功能
方法 | 描述 |
---|---|
public boolean delete() | 删除文件或者文件夹 |
注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
夹 |
注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
[外链图片转存中…(img-lwsdRhRn-1715658976929)]
[外链图片转存中…(img-dVegyjQO-1715658976929)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!