一.File,IO流概述
二.File文件
1.File文件对象的创建
(路径:
)
2.常用方法1:判断文件类型、获取文件信息
(注意:
)
3.常用方法2:创建文件、删除文件
(creatNewFile()会爆红 alt+回车处理异常就好了。如果创建成功会返回true)
4.常用方法3:遍历文件夹
当需要进行文件搜索(不仅仅在一级文件中时 利用到方法递归 如下)
案例:改变某个文件夹下视频的序号,要求从19开始
indexOf("、")
:找到字符串name
中第一个、
的位置(索引值)。有则返回位置 无则返回-1substring(0, index)
:提取分隔符(不包含、
)之前的部分。substring(index)
:提取分隔符及之后的部分。
三.前置知识:方法递归
1.认识递归的形式
2.应用、执行流程、算法思想
1.案例-计算n的阶乘
2.递归算法三要素
3.案例-猴子吃桃
3.其他应用:文件搜索-非空文件夹删除-啤酒问题
四.前置知识:字符集
1.常见字符集介绍
(
)
2.字符集的编码、解码操作
,
五.IO流-字节流
1.IO流的分类、体系
2.每个IO流的作用、用法
1.文件字节输入流:每次读取一个字节
当文件已经没有数据可读 会返回-1
当文件内容特别多时 需要利用循环(缺点:读取性能很差,读取汉字会乱码):
流使用完后必须关闭,释放系统资源!
2.文件字节输入流:每次读取多个字节
第一次读取时,读取了前3个字节,对应的字符是 abc,
文件中剩下的内容是 66
,但 buffer
的长度是3,所以只会读取2个字节(66
),覆盖掉ab,第三个字节仍然是第一次读取后残留的值c
为了避免这种情况的出现:
代码优化(利用循环)
3.文件字节输入流:一次读取完全部字节
(1) 方式一
()
(2)方式二
()
4.文件字节输出流:写字节出去
不用提前创建测试文件 代码运行后会自动创建
第二次运行是在第一次运行结果后再次加入测试abd
换行!!!
5.案例:文件复制
六.IO流-资源释放的方式
1.try-catch-finally
注意:!一定不能在finally中返回数据
try
块:尝试执行return a / b;
。如果b
为 0,这里会抛出ArithmeticException
异常。catch
块:- 如果
try
块中抛出异常,会进入catch
块。 e.printStackTrace();
用于打印异常的堆栈跟踪信息,帮助调试。return -1;
表示如果出现异常,方法返回 -1。
- 如果
finally
块:- 无论
try
块是否抛出异常,也无论catch
块是否执行,finally
块都会执行。 finally
块中的return 111;
会覆盖try
或catch
块中的return
值。
- 无论
做法:选中后 Ctrl+alt+t
此时需要在括号外定义is os:
此时,有可能担心在is,os赋值前会有异常,导致空指针异常或在try模块里已经进行close,需要对于finally这两行代码判空后再次try-catch:
2.try-with-resource
try-catch-finally代码较为臃肿
注意:这里只能放置资源对象(流对象),而不能放置普通变量。
(资源都会实现Autocloseable接口,都会有一个close方法,并且资源放到这里后用完之后,会被自动调用其close方法完成资源的释放操作。)