传智播客风清扬视频-------IO简述之File讲解
File类概述和构造方法
File:文件或目录路径名的抽象表示形式
构造方法:
File(String pathname),根据路径得到File对象
File(String parent,String child),根据一个目录和子文件/目录得到File对象
File(File parent,String child),根据父File对象和子文件/目录得到File对象
public class FileDemo { public static void main(String[] args) { // File(String pathname):根据一个路径得到File对象 // 把e:\\demo\\a.txt封装成一个File对象 File file = new File("E:\\demo\\a.txt");
// File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 File file2 = new File("E:\\demo", "a.txt");
// File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 File file3 = new File("e:\\demo"); File file4 = new File(file3, "a.txt");
// 以上三种方式其实效果一样 }}
A:创建功能
public boolean createNewFile():创建文件,返回true,如果存在这个文件,就不创建,返回false.
public boolean mkdir() : 创建文件夹,返回true,如果存在这个文件夹,就不创建,返回false.
public boolean mkdirs() : 创建文件夹,如果父文件夹不存在,则会帮你创建出来
public class FileDemo { public static void main(String[] args) throws IOException { // 需求:我要在e盘目录下创建一个文件夹demo File file = new File("e:\\demo"); System.out.println("mkdir:" + file.mkdir());
// 需求:我要在e盘目录demo下创建一个文件a.txt File file2 = new File("e:\\demo\\a.txt"); System.out.println("createNewFile:" + file2.createNewFile());
// 需求:我要在e盘目录test下创建一个文件b.txt // Exception in thread "main" java.io.IOException: 系统找不到指定的路径。 // 注意:要想在某个目录下创建内容,该目录首先必须存在。 // File file3 = new File("e:\\test\\b.txt"); // System.out.println("createNewFile:" + file3.createNewFile());
// 需求:我要在e盘目录test下创建aaa目录 // File file4 = new File("e:\\test\\aaa"); // System.out.println("mkdir:" + file4.mkdir());
// File file5 = new File("e:\\test"); // File file6 = new File("e:\\test\\aaa"); // System.out.println("mkdir:" + file5.mkdir()); // System.out.println("mkdir:" + file6.mkdir());
// 其实我们有更简单的方法 File file7 = new File("e:\\aaa\\bbb\\ccc\\ddd"); System.out.println("mkdirs:" + file7.mkdirs());
// 看下面的这个东西: File file8 = new File("e:\\liuyi\\a.txt"); System.out.println("mkdirs:" + file8.mkdirs()); }}
B:删除功能
public boolean delete() : 删除文件或文件夹
注意:
A:如果你创建的文件或文件夹没写盘符,默认在项目路径下
B:Java中的删除不走回收站。
C:要删除一个文件夹,文件夹内不能包含文件或文件夹。
public class FileDemo { public static void main(String[] args) throws IOException { // 创建文件 // File file = new File("e:\\a.txt"); // System.out.println("createNewFile:" + file.createNewFile());
// 我不小心写成这个样子了 File file = new File("a.txt"); System.out.println("createNewFile:" + file.createNewFile());
// 继续玩几个 File file2 = new File("aaa\\bbb\\ccc"); System.out.println("mkdirs:" + file2.mkdirs());
// 删除功能:我要删除a.txt这个文件 File file3 = new File("a.txt"); System.out.println("delete:" + file3.delete());
// 删除功能:我要删除ccc这个文件夹 File file4 = new File("aaa\\bbb\\ccc"); System.out.println("delete:" + file4.delete());
// 删除功能:我要删除aaa文件夹 // File file5 = new File("aaa"); // System.out.println("delete:" + file5.delete());
File file6 = new File("aaa\\bbb"); File file7 = new File("aaa"); System.out.println("delete:" + file6.delete()); System.out.println("delete:" + file7.delete()); }}
C:重命名功能
public boolean renameTo(File dest)
如果路径相同,就是改名。
如果路径不相同,就是改名并剪切。
路径以盘符开始: 绝对路径 c:\\demo
路径不以盘符开始:相对路径。
public class FileDemo { public static void main(String[] args) { // 创建一个文件对象 // File file = new File("林青霞.jpg"); // // 需求:我要修改这个文件的名称为"东方不败.jpg" // File newFile = new File("东方不败.jpg"); // System.out.println("renameTo:" + file.renameTo(newFile));
File file2 = new File("东方不败.jpg"); File newFile2 = new File("e:\\林青霞.jpg"); System.out.println("renameTo:" + file2.renameTo(newFile2)); }}
D:判断功能
public boolean isDirectory() :判断是否是目录
public boolean isFie() :判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏
public class FileDemo { public static void main(String[] args) { // 创建文件对象 File file = new File("a.txt");
System.out.println("isDirectory:" + file.isDirectory());// false System.out.println("isFile:" + file.isFile());// true System.out.println("exists:" + file.exists());// true System.out.println("canRead:" + file.canRead());// true System.out.println("canWrite:" + file.canWrite());// true System.out.println("isHidden:" + file.isHidden());// false }}
E:获取功能
public String getAbsolutePath(): 获取绝对路径
public String getPath() : 获取相对路径
public String getName() : 获取名称
public long length() : 获取长度。字节数
public long lastModified() :获取最后一次修改的时间,毫秒值
public class FileDemo { public static void main(String[] args) { // 创建文件对象 File file = new File("demo\\test.txt");
System.out.println("getAbsolutePath:" + file.getAbsolutePath()); System.out.println("getPath:" + file.getPath()); System.out.println("getName:" + file.getName()); System.out.println("length:" + file.length()); System.out.println("lastModified:" + file.lastModified());
// 1416471971031 Date d = new Date(1416471971031L); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = sdf.format(d); System.out.println(s); }}
F:高级获取功能
public String[] list(): 获取指定目录下所有文件和文件夹的名称数组
public File[] listFiles(): 获取指定目录下所有文件和文件夹的File数组
public class FileDemo { public static void main(String[] args) { // 指定一个目录 File file = new File("e:\\");
// public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 String[] strArray = file.list(); for (String s : strArray) { System.out.println(s); } System.out.println("------------");
// public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 File[] fileArray = file.listFiles(); for (File f : fileArray) { System.out.println(f.getName()); } }}
案例:输出e:盘目录下所有以.jpg结尾的文件
/* * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 * * 分析: * A:封装e判断目录 * B:获取该目录下所有文件或者文件夹的File数组 * C:遍历该File数组,得到每一个File对象,然后判断 * D:是否是文件 * 是:继续判断是否以.jpg结尾 * 是:就输出该文件名称 * 否:不搭理它 * 否:不搭理它 */public class FileDemo { public static void main(String[] args) { // 封装e判断目录 File file = new File("e:\\");
// 获取该目录下所有文件或者文件夹的File数组 File[] fileArray = file.listFiles();
// 遍历该File数组,得到每一个File对象,然后判断 for (File f : fileArray) { // 是否是文件 if (f.isFile()) { // 继续判断是否以.jpg结尾 if (f.getName().endsWith(".jpg")) { // 就输出该文件名称 System.out.println(f.getName()); } } } }}
G:过滤器功能
案例代码二: 使用过滤器功能
/* * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 * A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。 * B:获取的时候就已经是满足条件的了,然后输出即可。 * * 要想实现这个效果,就必须学习一个接口:文件名称过滤器 * public String[] list(FilenameFilter filter) * public File[] listFiles(FilenameFilter filter) */public class FileDemo2 { public static void main(String[] args) { // 封装e判断目录 File file = new File("e:\\");
// 获取该目录下所有文件或者文件夹的String数组 // public String[] list(FilenameFilter filter) String[] strArray = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // return false; // return true; // 通过这个测试,我们就知道了,到底把这个文件或者文件夹的名称加不加到数组中,取决于这里的返回值是true还是false // 所以,这个的true或者false应该是我们通过某种判断得到的 // System.out.println(dir + "---" + name); // File file = new File(dir, name); // // System.out.println(file); // boolean flag = file.isFile(); // boolean flag2 = name.endsWith(".jpg"); // return flag && flag2; return new File(dir, name).isFile() && name.endsWith(".jpg"); } });
// 遍历 for (String s : strArray) { System.out.println(s); } }}
总结:
1:异常(理解) (1)程序出现的不正常的情况。 (2)异常的体系 Throwable |--Error 严重问题,我们不处理。 |--Exception |--RuntimeException 运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 (3)异常的处理: A:JVM的默认处理 把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。 B:自己处理 a:try...catch...finally 自己编写处理代码,后面的程序可以继续执行 b:throws 把自己处理不了的,在方法上声明,告诉调用者,这里有问题 (4)面试题 A:编译期异常和运行期异常的区别? 编译期异常 必须要处理的,否则编译不通过 运行期异常 可以不处理,也可以处理 B:throw和throws是的区别 throw: 在方法体中,后面跟的是异常对象名,并且只能是一个 throw抛出的是一个异常对象,说明这里肯定有一个异常产生了 throws: 在方法声明上,后面跟的是异常的类名,可以是多个 throws是声明方法有异常,是一种可能性,这个异常并不一定会产生 (5)finally关键字及其面试题 A:finally用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了 B:面试题 a:final,finally,finalize的区别? b:如果在catch里面有return,请问finally还执行吗?如果执行,在return前还是后 会,前。
实际上在中间。这个上课我们讲过 C:异常处理的变形 try...catch...finally try...catch... try...catch...catch... try...catch...catch...fianlly try...finally (6)自定义异常 继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可 (7)异常的注意实现 A:父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常 B:父的方法没有异常抛出,子的重写方法不能有异常抛出 C:父的方法抛出多个异常,子的重写方法必须比父少或者小
2:File(掌握) (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件 (2)构造方法 A:File file = new File("e:\\demo\\a.txt"); B:File file = new File("e:\\demo","a.txt"); C:File file = new File("e:\\demo"); File file2 = new File(file,"a.txt"); (3)File类的功能(自己补齐) A:创建功能 B:删除功能 C:重命名功能 D:判断功能 E:获取功能 F:高级获取功能 G:过滤器功能 (4)案例: A:输出指定目录下指定后缀名的文件名称 a:先获取所有的,在遍历的时候判断,再输出 b:先判断,再获取,最后直接遍历输出即可 B:批量修改文件名称
传智播客风清扬视频-------IO简述之File讲解相关推荐
- 传智播客风清扬视频-------网络编程简介
计算机网络模型 OSI(Open System Interconnection开放系统互连)参考模型 TCP/IP参考模型 OSI 应用层--表示层--会话层--传输层--网络层--数据链路层--物理 ...
- 传智播客风清扬视频-------线程简介
想了解线程,必须先了解进程,因为线程是依赖进程存在的. 什么是进程? 进程就是正在运行的程序:是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程有什么意义? 单进程 ...
- java工作流 传智播客_Activiti工作流视频教学(企业开发实战讲解)_传智播客
Activiti工作流视频教学(企业开发实战讲解)_传智播客课程简介: Activiti工作流视频教学(企业开发实战讲解)_传智播客本教学共分4天进行讲解,本站提供第1天内容在线观看,全集教学请在本站 ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 卷 ba ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)
卷 backup 的文件夹 PATH 列表 卷序列号为 00000025 D4A8:14B0 J:. │ 1.txt │ c语言经典案例效果图示.doc │ ├─1传智播客_尹成_C语言从菜鸟到 ...
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)...
卷 backup 的文件夹 PATH 列表 卷序列号为 00000025 D4A8:14B0 J:. │ 1.txt │ c语言经典案例效果图示.doc │ ├─1传智播客_尹成_C语言从菜鸟到 ...
- 传智播客C语言视频第二季 第一季基础上增加诸多C语言案例讲解,有效下载期为10 5-10 10关闭
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 卷 backup ...
- 传智播客-php基础视频,传智播客PHP核心基础视频教程推荐(资源)
PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言, ...
- 传智播客软件测试学习视频汇总:
课程名称 分类 URL 提取码 软件测试入门到精通 视频 http://yun.itheima.com/course/490.html?aoe cnj1 资料 https://pan.baidu.co ...
- Java中设计模式——装饰类(传智播客毕老师视频讲解)
装饰类设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有的对象传入,基于已有的功能,并提供加强功能,则此自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象,并基于被装饰的 ...
最新文章
- JBOSS 6和JBOSS 5搭建多实例方法
- 面对offer,如何选择
- 程序员,别了校园入了江湖
- 如何在PowerPoint中自动调整图片大小
- python多久可以精通_学Python需要多久能学会?精通Python需要多长时间?
- Java那些事之Log4j
- [bzoj5158][Tjoi2014]Alice and Bob
- Essential Booklist of .Net Framework
- MVC5 + EF6 + Bootstrap3 (11) 排序、搜索、分页
- ArcGIS中使用模型构建器快速计算图斑面积占比
- 开运魔法,晓腾叔叔的日常迷信。
- 微信小程序-自定义三级联动
- matlab条形图标注数据,matlab条形图怎样标注
- HTML期末大作业~仿小米商城网页设计模板(HTML+CSS+JavaScript)
- GPS 双频/单频接收机介绍
- AtCoder Beginner Contest 211
- anchors.fill和anchors.centerIn区别
- 动态测试与静态测试--手工测试和自动化测试
- 量变到质变所需要的努力
- activiti7没有自动生成表
热门文章
- Pigeon服务的注册与发现
- C++变量初始化形式及其默认初始值
- 计算机与资源管理器有何区别,在win7中双击打开计算机和右击打开资源管理器有什么区别...
- 修改Ceph 监视器地址
- php异步实现,避免长时间等待
- 计算机碎片整理的作用,磁盘碎片整理有什么用,详细教您磁盘碎片整理有什么作用...
- html5数学公式编辑器,Daum Equation Editor:数学公式编辑器
- 在Fcitx5中使用自定义双拼方案
- 2021-7-28-自动化运维Ansible
- ghost linux 黑屏,Ghost 与 Linux 的兼容性