1.缓冲流?java
缓冲流,也叫高效流,是对4个基本的FileXxx
流的加强,因此也是4个流数组
字节缓冲流:BufferedInputStream
,BufferedOutputStream
编码
字符缓冲流:BufferedReader
,BufferedWriter
spa
2.原理?code
在建立流对象时,会建立一个内置的默认大小的缓冲区数组,经过缓冲区读写,减小系统IO次数,从而提升读写的效率。对象
复制一个300M的文件,普通io流可能速度在20分钟以上,缓冲流只须要几百毫秒。接口
3.构造方法?内存
public BufferedInputStream(InputStream in)
:建立一个 新的缓冲输入流。it
public BufferedOutputStream(OutputStream out)
: 建立一个新的缓冲输出流。io
public BufferedReader(Reader in)
:建立一个 新的缓冲输入流。
public BufferedWriter(Writer out)
: 建立一个新的缓冲输出流。
4.方法?
BufferedReader:public String readLine()
: 读一行文字。
BufferedWriter:public void newLine()
: 写一行行分隔符,由系统属性定义符号。
5.转换流?
按照某种规则,将字符存储到计算机中,称为编码 。
存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。
在IDEA中,使用FileReader
读取项目中的文本文件。因为IDEA的设置,都是默认的UTF-8
编码,因此没有任何问题。可是,当读取Windows系统中建立的文本文件时,因为Windows系统的默认是GBK编码,就会出现乱码。
6.InputStreamReader?
是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。
7.构造方法?
InputStreamReader(InputStream in)
: 建立一个使用默认字符集的字符流。
InputStreamReader(InputStream in, String charsetName)
: 建立一个指定字符集的字符流。
8.OutputStreamWriter?
转换流java.io.OutputStreamWriter
,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节.
9.构造方法?
OutputStreamWriter(OutputStream in)
: 建立一个使用默认字符集的字符流。
OutputStreamWriter(OutputStream in, String charsetName)
: 建立一个指定字符集的字符流。
10.序列化?
Java 提供了一种对象序列化的机制。用一个字节序列能够表示一个对象,该字节序列包含该对象的数据
、对象的类型
和对象中存储的属性
等信息。字节序列写出到文件以后,至关于文件中持久保存了一个对象的信息。
反之,该字节序列还能够从文件中读取回来,重构对象,对它进行反序列化。对象的数据
、对象的类型
和对象中存储的数据
信息,均可以用来在内存中建立对象
11.ObjectOutputStream?
java.io.ObjectOutputStream
类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。
12.构造方法?
public ObjectOutputStream(OutputStream out)
: 建立一个指定OutputStream的ObjectOutputStream。
一个对象要想序列化,必须知足两个条件:
1该类必须实现java.io.Serializable
接口,Serializable
是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出NotSerializableException
。
2该类的全部属性必须是可序列化的。若是有一个属性不须要可序列化的,则该属性必须注明是瞬态的,使用transient
关键字修饰。
public final void writeObject (Object obj)
: 将指定的对象写出。
13.ObjectInputStream?
ObjectInputStream反序列化流,将以前使用ObjectOutputStream序列化的原始数据恢复为对象。
14.构造方法?
public ObjectInputStream(InputStream in)
: 建立一个指定InputStream的ObjectInputStream。
public final Object readObject ()
: 读取一个对象。
对于JVM能够反序列化对象,它必须是可以找到class文件的类。若是找不到该类的class文件,则抛出一个 ClassNotFoundException
异常。