IO方面学习总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

事实证明,IO流和多线程并不好学。

一、异常

1.异常分类

Erro
代表系统异常错误(严重问题),程序员管不了
Exception
叫做异常“程序可能出现的问题”
RuntimeException
运行异常(在编译中不会提醒,运行时出现的异常)

其他异常
编译异常:编译阶段就会提醒的异常(必须手动处理,否则代码报错)

2.异常流程

JAVA——>字节文件
编译阶段就要处理的异常
编译阶段:JAVA不会运行代码,只会检查语法是否有错,或做一些性能优化
字节码文件——>运行结果
运行时异常,编译阶段不需要处理。代码运行时出现的异常;一般由于参数传递错误带来的问题

3.异常的作用

作用一
查询bug的关键信息
作用二
异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况
eg:throw new RuntimeException();

4.异常的处理方式

JVM默认处理方案

把异常名称、原因、位置等信息输出在控制台
程序停止,不执行下面代码

5.自己处理

捕获异常

格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常的处理代码
}
好处:可以让代码继续往下执行,不会停止

注意项:
try中没有遇到问题,忽热执行
会把try类名的代码执行,不执行cacth类名的代码
try中遇到多个问题,怎么办
要写多个个catch与多个异常对应;
父类异常要写在最下面
ps:jd7以后,一个catch类名可以写多个异常,中间用“|”隔开
try中遇到的问题没被捕获,怎么办
相当于白写,交给JVM处理
try遇到了问题,try下面的其他代码还会执行吗
try中代码出货问题,会直接停止,跳到对应的catch中,若catch中无对应解决方法,默认交给虚拟机处理

6.抛出异常

throws

写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常
注意点:编译时异常必须写,运行时异常可以不写

throw

写在方法内,结束方法手动跑出异常对象,交给调用者,方法中下面的代码不再执行了
异常中的常见方法

Trowable
在这里插入图片描述

错误输出语句:System.err.println();显示红色字体

二、方法引用

把已有方法拿过来用,当作函数式接口中超级偶像方法的方法体

1.要求:

1.引用处必须是函数式接口;
2.被引用的方法必须已经存在
3.被引用方法的形参和返回值需要和抽象方法保持一致
4.被引用的方法功能要满足当前需求
“::”引用方法的符号具体使用

eg:Arrays.sort(arr,FunctionDemo1::subtracktion);

2.方法引用的分类

引用静态方法
格式:类名::静态方法
eg:Integer::parseInt
引用成员方法
给是:对象::成员方法
1.其他类:其他类对象::方法名
2.本类:this::方法名(不能是静态方法)
3.父类:super::方法名
引用构造方法
格式:new::类名
eg:Student::new

三、IO流

是存储和读取数据的解决方案
file表示系统中文件或者文件夹的路径
IO流用于读写文件中的数据(可以读写文件,或网络中的数据)
创建原则:随用随创建,不用就关闭

流的方向

输入流
输出流

操作文件类型

字节流(所有类型文件)
字符流(纯文本文件)

1.IO流体系

在这里插入图片描述

1.字节流

InputStream&&OutputStream

1)FileOutStream(操作本地文件的字节输出流)

在这里插入图片描述
如果想续写,可以打开续写开关“true”

步骤:
**创建字节对象**
1.参数是字符串表示的路径或者是file对象都可以
2.如果路径不存在会创建一个新的文件,但是要保证父级路径是存在的
3.如果文件已经存在,则会清空文件
**写出数据**
write方法的参数是整数,写到本地文件中的参数其实最终对应ASCII码表
**释放资源**

每次使用完流后都要释放资源
创建字节流输出对象

try catch异常处理

在这里插入图片描述
finally里代码一定会被执行,除非虚拟机停止

2.字符流

在这里插入图片描述
字符流=字节流+字符集
特点:
**输入流:**一次读一个字节,遇到中文时,一次读多个字节
**输出流:**底层会把数据按照规定的编码方式进行编码,比纳城字节在写到文件中
使用场景:对纯文本文件进行读写操作

reader

FileReader:

创建字符输入流对象细节:
读取文件不存在直接报错
读取数据细节:
1.按字节进行读取,遇见中文,一次多读个字节,读取后解码,返回一个整数
2.读到文件末尾,返回一个-1
释放资源:
统一关流close。

wirter

FileWriter:

在这里插入图片描述

flush:刷新缓冲区

细节

创建字符输出流对象:
参数是字符串表示的对象,或者File对象都可以
如果文件并不存在会创建一个新文件,但要保证父级路径存在
如果文件已经存在则清空文件,不想清空可以打开续写开关
写数据:
如果write方法的参数是整数,但实际上写到本地文件中的是证书在字符集上对应的字符
释放资源
同理

3.字符集

在这里插入图片描述

三、编码解码代码实现

1.编码方法

在这里插入图片描述

2.解码方法

在这里插入图片描述
出现乱码的原因
1.读取数据时未读完整个汉字
2.编码和解码时的方式不统一

四、高级流

1.缓冲流(buffered)

在这里插入图片描述

字节缓冲流

在这里插入图片描述
特有方法
转换流

2.转换流

是字符流与字节流之间的桥梁
在这里插入图片描述
字符转换输入流&&字符转换输出流
在这里插入图片描述

3.序列化流

在这里插入图片描述
细节:使用对象输出流保存到文件会出现异常
解决方案:据要让javabean类实现Serializable接口

4.打印流

在这里插入图片描述
字节打印流(printstream)/字符打印流(printwriter)
特点:
1.打印流只操作文件目的地,不操作数据源;
2.特有的写出方法可以实现,数据原样写出
3.特有的写出方法,可以实现自动刷新,换行

字节打印流方法

在这里插入图片描述
构造
在这里插入图片描述
成员
在这里插入图片描述

5.解压缩流

在这里插入图片描述

总结

这周唯一的期望是可以平安通过考核。
下周计划:进入考试准备时间,总之重心会放到其他地方去了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值