缓冲流 序列流 转换流

缓冲流

1.缓冲流_概述;
回顾字节流,读,写都可以使用一种"数组"的方式,这种方式会大大提高读,写的效率,基于这种原因java背部提供一种高效的"缓冲流",其内部自带一个缓冲区(数组),目的也同样提高中程序的运行速率.
java提供的缓冲流;有字节流和字符流
字节流;分别为输出流 和输入流
输出流;OutputStream 父类; FileOutputStream (基本流) 子类 ;BufferedOutputStream(缓冲流)
输入流;InputStream父类;FileInputStream(基本流)子类; BufferedInputStream(缓冲流)
字符流;分别为输出流和输入流
输出流;Writer父类;OutputStreamWtiter(转换流);FileWriter(基本流) BufferedWriter(缓冲流)(特有方法;newLine();输出一个换行)
输入流;Reader父类:InputStreamReader(转换流)FileReader(基本流)BufferedReader(缓冲流)(特有方法;ReadLine();读一行数据
2.字节缓冲流;
输出流;BufferedOutputStream;
输入流;BufferedInputStream;
注;没有特殊方法使用父类
在这里插入图片描述
在这里插入图片描述
3.字符缓冲流;
a). 字符缓冲流通"字节缓冲流"作用是一样的,内部提供了8k的缓存区;
b).字符缓冲区提供了两个特有的方法;
输出流;newLine()换行
输入流;readLine()读取一行数据
在这里插入图片描述
4.缓冲流_字符文本__排序
在这里插入图片描述

转换流

1.转换流_为什么要有字符流;
"字节流"是按:字节"读,写,而除英文,其他国家的文字可能不能使用一个字节表示,可能使用2个字节,可能使用三个字节进行表示,这样的还,其他国家的文字也按"一个字节"读写,这样会很麻烦,基于这种愿意,java又制作l"字符流"它可以根据各国语言的编码方式,来自动堆在字符使用响应的字节数进行编码,解码.
2.字节编码和字符集
编码;数字,英文,标点符号,汉字等字符是二进制数组转换之后的结果,按照某种跪着,讲字符储存到计算机中,称之为编码,反之,将储存在计算机中的二进制数按照某种规则解析显示出来,称之为解码,
常见的字符集(编码表),记录了字符和数字的映射关系,当计算机储存"字符"时,实际储存的是这个字符对应的数字的二进制,
ASCII码表;最早的码表,记录1128字符,每个字符使用1个字节表示,
中文码表;(GBxxx)
a)CB2312;早期的码表,里面记录7000多个汉字,现在不使用了
b)GBK;目前使用的,码表,记录了2万多个汉字,每个汉字都使用了2字节;
c)GB18030;未来要使用的码表,7万多汉字.每个汉字使用1,2.3个字节表示,
3.UTF-8码表’国际码表;有中文,字符采用1,2,3,4字节表示,每个中文使用;3个字节
4.Unicode码表;国际码表;有中文3,4千每个字翻译使用两个字节表示,java就是支持unicode码表
5.ISO-8859-1码表;没有中文
3,码表引出问题
码表引出的问题,
在这里插入图片描述
在这里插入图片描述
用转换流进行修改
在这里插入图片描述
4.转换输出流OutputStreamWriter的使用
fileWriter和FileReader都不能指定字符集,它们只能使用系统默认字符集
可以使用它们的父类
OutputStreamWrite和
InputStreamReader
在这里插入图片描述
在这里插入图片描述
5.转换流工作方式图解
在这里插入图片描述
在这里插入图片描述

序列化

1.序列化;
只讲一个"对象连同属性值"一起存储在一个文件中,或者通过网络传输

被序列化你的对象,必须实现;就java.io.Serializable(接口)此接口无任何抽象方法,这种接口叫做标记接口,表示开启了某些功能
在这里插入图片描述
**2.反序列化类;**指将之前序列化的对象,再次读取到程序中,并在内在中创造对象.
在这里插入图片描述
3.关于版本号/禁止属性被序列化transient关键字
反序列化之前会先检查现有类的序列号和文件中对象的序列号是否相同,如果不同,会直接抛出异常.建议我们程序员自己来维护这个序列号.
在这里插入图片描述
4.序列化的例子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打印流

概述;
1.java中有两个打印流;
a).字节打印流;PrintlnStream
b).字符打印流;PrintlnWriter
2.打印流的特点;
a).只有输出流,没有输入流
b).打印操作控制台,也可以操作文件
字节打印流PrintlnStream类;
a) .平台打印输出调用println 和 print 两种方法完成,这两个方法都来自于java.io.printStream类
b). System.out就是PrintStream类型,只不过他的流向是系统规定的,打印在公职太上面,我们可以改变他的流向
c) .System.out.println();向控制台输出数据
d). System.out就是:PrintStream类型;默认被指向;控制台
e).我们可以更改这个out的流向,让它流向文件

猜你喜欢

转载自blog.csdn.net/weixin_42943720/article/details/82780563