day10------------------------------------------------------------
【重点1】缓冲流
原理:在基本流上的"增强",增加了一个缓冲区,减少系统的IO次数,提升了效率
字节缓冲输入流
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
字节缓冲输出流
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
字符缓冲输入流
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
特有成员方法:
String readLine() 读取一行文本数据
返回值:包含该行内容的字符串,不包含任何行终止符,如果已达流末尾,返回null
行终止符:"\r" "\n" "\r\n"
字符缓冲输出流
BufferedWriter(Writer out)
BufferedWriter(Writer out, int sz)
特有成员方法:
void newLine() 写入一个行分隔符
释放资源 close方法,可以只关闭缓冲流,因为关闭缓冲流时会自动关闭基本流
【重点3】转换流
字符编码
一套自然语言的字符与二进制数之间的对应规则
UTF-8最为常用
字符集
charSet,也叫编码表
ASCII字符集 GBK字符集 Unicode字符集 ......
IDEA默认使用UTF-8,想要读取其他编码的文件
InputStreamReader
字节转字符的桥梁 -> 解码
InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader
InputStreamReader(InputStream in, String charsetName) 创建一个使用指定字符集的 InputStreamReader
注意:构造方法中指定的编码表要和文件的编码表相同,否则发生乱码
OutputStreamWriter
字符转字节的桥梁 -> 编码
OutputStreamWriter(OutputStream out) 创建并使用默认字符编码的 OutputStreamWriter
OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter
【重点2】序列化和反序列化
把数据进行网络传输时,就需要使用到序列化流
把对象以流的方式,写入到文件中保存,叫做 写对象, 也叫 对象的序列化
对象中包含的不仅仅是字符,使用字节流
ObjectOutputStream:对象的序列化
把文件中保存的对象,以流的方式读出来,叫做 读对象, 也叫对象的 反序列化
读取的文件都是字节,使用字节流
ObjectInputStream:对象的反序列化
使用序列化
实现 序列化的 标记型接口 Serializable, 给一个序列化ID
static关键字:静态关键字
静态优先于非静态加载到内存中(静态优先于对象进入到内存中)
被static修饰的成员变量不能被序列化,序列化的都是对象
transient关键字:瞬态关键字
被transient修饰的成员变量,不能被序列化(不想成员变量被序列化,使用transient修饰)
文件会针对自身的特点,会生成一个序列化ID,保存在class文件中
同时,在文件序列化的视乎,也会生成一个序列化ID,保存在class文件中
在反序列化的时候,会比较2个ID是否相同,如果不同,抛出InvalidClassException异常
解决方案:
把序列号写死
private static final long serialVersionUID = 1L;
目前市面上流行的java开发架构
分布式架构 相当于 多台电脑互相之间配合
打印流
PrintStream
PrintWriter
了解 |
|