黑马程序员_<<IO扩展对象和编码(序列化,管道流,字节(符)数组),随机访问文件>>
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
对象被序列化后,然后存到硬盘的文件中,然后读取的时候可以方便的读取,要被存到硬盘文件中的对象类,必须实现接口Serializable接口,此接口中没有抽象方法,是为了标识类的。
ObjectOutputStream的方法writeObject()和ObjectInputStream的方法readObject(),这两个方法是成对出现的,一个是写,一个是读。
注意点:
1.当被序列化的对象存到了硬盘上后,如果原来的类更改了,那么再次读取的时候,会读取失败,因为他们的标识ID被更改了,所以要向更改后,仍可以读取的话,那么在序列化的时候,指定固定的标识ID。static final long serialVersionUID = 42L;
2.静态成员不能被序列化,因为序列化的都是在堆中,而静态的成员实在方法区中,如果非静态成员要向也不被序列化,那么由关键字:transient修饰,那么就会不被序列化。
3.当文件中存储了多个对象,那么读取的时候没调用一次readObject方法,就读取一个对象。
2.示例用序列标识号来标识类,那么原来的类更改了一些操作,那么也可以继续使用硬盘中被序列化的文件对象。
CharArrayReader和CharArrayWriter 这两个类和ByteArrayInputStream,ByteArrayOutputStream使用一样,只是一个操作字符数组另一个操作字节数组,
StringReader与StringWriter用法也一样,只是操作的字符串
注意点:writeTo(OutputStream out)方法可以把数组中的数据直接写到流中。6.编码表ISO8859-1:属于单字节编码方式,主要是在0~255字符范围,只要在英语在英文上。
GBK/GBK2312:中文的编码方式,只要是标识汉字,
Unicod:使用的是16进制的编码方式。
UTF:可以是字符的长度是1-6字符,这样可以节约空间。兼容所有字符。
转换流之间的编码
编码表:就是把各个国家的文字全部用数字表示出来,应用于计算机,那么这样就形成了一个表,就是编码表
GBK:一个汉字站两个字节
UTF-8:一个汉字占三个字节
同样的编码方式要用同样的变法方式读取,否则会出现乱码
8.字符编码-联通
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
