天天看点

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

JDK(java官方)内置对象-高级-File

1.为什么要学习File

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

讲解IO流之前为什么先讲解异常和File类呢?

因为File表示的是IO流将来要操作的文件,所以我们需要学习File类。

而操作文件无非就是上传文件和下载文件,在这个操作的过程中可能出现问题,出现问题后,我们需要对对应的代码进行处理。所以我们需要学习异常。

2.File简介

2.1.File的概念

文件和目录路径名的抽象表示形式

2.2.File常见成员

2.2.1.构造方法

publicFile(String pathname)

publicFile(String parent,String child)

publicFile(File parent,String child)

通过创建对象后,我们再来理解文件和目录路径名的抽象表示形式这句话的意思:

仅仅是一个路径的表示,不代码具体的事物一定是存在的。

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

2.2.2.常见方法

2.2.2.1.创建功能

public boolean createNewFile() 创建文件如果存在这样的文件,就不创建了

public boolean mkdir() 创建文件夹如果存在这样的文件夹,就不创建了

public boolean mkdirs() 创建文件夹,如果父文件夹不存在,会帮你创建出来,如果存在就不创建了

2.2.2.1.1. mkdir()

代码实战:

publicclass Demo1 {

【思考】:既然返回值是boolean,那么本地磁盘上已经存在了这个文件夹,到底返回true还是false呢?

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题
2.2.2.1.2. createNewFile()

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【思考】:为何会报错呢?

观察源码

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【思考】:这个方法如果再执行一次,效果会怎么样呢?

返回false

【思考题】:请在d盘的test目录下创建一个b.txt文件

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【思考题】:我想要在d盘的aaa文件夹下创建一个bbb文件夹,怎么做呢?

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【接着思考】:为何不会抛出异常呢?

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【正确做法】:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【接着思考】:如果有很多层级结构的文件夹,这样子操作显然是非常不合适的

这时候,我们就迫切需要一个方法帮我们去处理这种情况,可以使用:Mkdirs()

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【开发总结】:

  • 你到底要创建文件还是文件夹,你最清楚,方法不要调错了。
  • 如果想要创建一个子文件/文件夹,前提必须要保证该文件对应的文件目录首先要存在

【注意点】:如果你在创建文件的时候,你没有写任何目录路径,那么会怎么样呢?

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

创建出来的文件存在于: E:\yueqian讲课\01-java基础\0830\备课代码\02-File\女神.jpg

你当前项目所在的目录下[U1] !!!!

2.2.2.2.删除功能

public boolean delete()

2.2.2.2.1.删除单个文件

如果删除的是本地硬盘中文件,那么会直接删除并且不走回收站!

File file = new File("d:\\a.txt"); System.out.println(file.delete());

如果删除的是本地项目中文件,删除完后,需要手动刷新一下

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

2.2.2.2.2.删除文件夹

删除bbb文件夹

// 删除bbb文件夹 File file11 = new File("e:\\aaa\\bbb"); booleanb = file11.delete(); System.out.println(b);

注意:在java中删除操作,不走回收站,所以请一定要注意!!!

删除aaa文件夹

File file= new File("d:\\aa\\bb"); file.delete();[n2] File fle = new File("d:\\aa");[n3] fle.delete();

因为aaa中有文件夹bbb,如果想要删除aaa文件夹,必须先删除bbb文件夹

下面代码为何会出错呢?因为这样子写,是代表在项目的根目录下删除[n4]

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

2.2.2.3.重命名功能

public boolean renameTo(File file)[n5]

代码实战:

磁盘上

File file = new File("D:\\校服美女.jpg"); File file2 = new File("D:\\女神.jpg"); System.out.println(file.renameTo(file2));

当前项目下

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

【思考】:如果在进行重命名操作的时候,路径不一致会怎么样呢?

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

其实是做了一个剪切操作[n6]

【开发小结】:

如果路径一致,那么仅仅就是改个名字。

如果路径不一致,那么不仅仅是改个名字,还会剪切。

2.2.2.4.判断功能

public booleanisDirectory() 判断是否是目录

public boolean isFile() 判断是否是文件

public booleanexists() 判断是否存在

public boolean canRead() 判断是否可读

public boolean canWrite() 判断是否可写

public boolean isHidden() 判断是否隐藏

文件的状态介绍

  1. 隐藏
  2. 可读
  3. 可写
  4. 可读可写

Windows 系统设置文件的状态

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

思考:File文件对象具体有哪些使用场景呢?

.2.2.5.获取功能

2.2.2.5.1.基本获取功能

• public String getAbsolutePath() 获取绝对路径[n7]

• public String getPath() 获取相对路径[n8]

思考:以后开发中,会使用哪种路径方式?

• public String getName() 获取名称

• public long length() 获取长度(字节长度)

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

容量的单位从小到大依次是:字节(B)、KB、MB、GB、TB。它们之间的关系是。

1TB=1024GB

1GB=1024MB

1MB=1024KB

1KB=1024字节

代码实战:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

• public long lastModified() (获取最后一次修改时间)

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题
System.out.println("最后修改时间:"+file.lastModified());

观察打印:

最后修改时间:1550292558058

思考:为何是这样子呢?[n9]

将毫秒数进行转换

Date date =new Date(file.lastModified()); SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sd.format(date); System.out.println("dateStr:"+dateStr);

观察打印结果:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题
2.2.2.5.2.高级获取功能

public String[] list() 获取指定目录下的所有文件或者文件夹的名称数组

获取当前项目下的所有

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

思考:如何获取当前盘符下的所有呢?

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

public File[] listFiles() 获取指定目录下的所有文件或者文件夹的File数组

观察打印效果:

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

思考:如何我想像上面一样,仅仅是获取到文件名称呢?[n10]

05-File对象JDK(java官方)内置对象-高级-File1.为什么要学习File2.File简介3.File作业练习题

思考:以后开发中,我们到底应该使用哪一种方式比较好呢?[n11]

3.File作业练习题

【练习题】:

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称,如果没有,给出提示!!

批量修改多个文件名称

[U1]在项目上右键刷新即可

或者去项目的目录下找

[n2]先删除bb

[n3]先删除aa

[n4]因为不加任何路径,默认就是删除当前项目目录下的东西

[n5]思考为何重命名方法的参数是File 类型?

[n6]刷新一下

[n7]获取的是完整路径名,从盘符开始

[n8]相对来获取的,参照物是盘符

[n9]是以毫秒数进行计算的

[n10]思路1:截取字符串

思路2:使用File.getName()方法

[n11]第二种方式比较好,因为返回的是File对象,有对象,就可以使用对象操作一些方法获取更多的信息