读书人

黑马软件工程师_lt;lt;IO扩展对象和编码(序

发布时间: 2013-10-08 17:12:09 作者: rapoo

黑马程序员_<<IO扩展对象和编码(序列化,管道流,字节(符)数组),随机访问文件>>

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


1. 序列化对象 1.概述

对象被序列化后,然后存到硬盘的文件中,然后读取的时候可以方便的读取,要被存到硬盘文件中的对象类,必须实现接口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:一个汉字占三个字节

同样的编码方式要用同样的变法方式读取,否则会出现乱码



黑马软件工程师_<<IO扩展对象和编码(序列化,管道流,字节(符)数组),随机访问文件>&gt

8.字符编码-联通



--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


读书人网 >编程

热点推荐