字符缓冲流—编码和解码—转换流—序列化流—打印流—commons-io工具包 学习总结

一.字符缓冲流
BufferedWriter->写
特有方法:newLine()->换行
BufferedReader->读
特有方法:readLine()
二.编码和解码:
编码:存数据,写数据->按照指定的编码集去编码
GBK:windows默认编码 2个字节代表一个中文
utf-8:idea中的默认编码 3个字节代表一个中文
解码:看数据,读数据->按照指定的编码集去解码

 编码还是解码,需要保证遵循的编码集一致,不然会出现乱码

三.转换流
InputStreamReader->读
InputStreamReader(InputStream in,String charsetName)
in:传递的是字节输入流对象
charsetName:可以指定什么规则去读数据->gbk utf-8 不区分大小写
如果不指定,默认UTF-8
OutputStreamWriter->写
OutputStreamWriter(OutputStream out, String charsetName)
out:字节输出流 FileOutputStream
charsetName:指定以什么规则的方式去写
指定什么规则写数据,就以什么规则去保存到文件
这个文件就是什么规则的

四.序列化流
序列化->写对象
ObjectOutputStream(OutputStream out)
写对象的方法:
writeObject(对象)
反序列化->读对象
ObjectInputStream->读对象
构造:
ObjectInputStream(InputStream in)
方法:
readObject()->读对象
注意:
1.实体类实现序列化接口Serializable
2.如果修改代码,没有重新序列化,那么直接反序列化会出现序列号冲突问题
原因:修改代码之后生成的class文件中的序列号,和之前保存到文件中的序列号不一致
解决:将序列号定死
3.如果不想让某一个成员被序列化[瞬态关键字:transient]
4.不确定循环次数的情况下,不要循环反序列化:EOFException
解决:将多个对象放在一个集合中,序列化和反序列化这个集合就行了
五.打印流
PrintStream:原样输出
构造:
printStream(文件路径)
println:原样输出,换行
print:原样输出,不换行

注意:
System中有一个setOut方法,可以改变流向
六.commons-io工具包
作用:大大简化我们的io操作
使用:引入jar包
a.在当前模块下创建lib的文件夹
b.将jar包放到文件夹下
c.将jar包加入到当前模块环境下:右键->add as library
工具类
IOUtils
- 静态方法:IOUtils.copy(InputStream in,OutputStream out)传递字节流,实现文件复制。
- 静态方法:IOUtils.closeQuietly(任意流对象)悄悄的释放资源,自动处理close()方法抛出的异常。

    FileUtils
       - 静态方法:FileUtils.copyDirectoryToDirectory(File src,File dest);
            传递File类型的目录,进行整个目录的复制,自动进行递归遍历。
       - 静态方法:writeStringToFile(File file,String str)写字符串到文本文件中。
       - 静态方法:readFileToString(File file)读取文本文件,返回字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值