Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第10章 文件IO操作06.pptVIP

Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第10章 文件IO操作06.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
  10.4 字 符 编 码   最初计算机的使用是在美国,当时所用到的字符也就是现在键盘上的一些符号和少数几个特殊的符号,一个字节所能表示的数字范围足以容纳所有的字符,实际上表示这些字符的数字的字节最高位(bit)都为0。也就是说,这些数字都在0到127之间,如字符a对应数字97,字符b对应数字98等。这种字符与数字对应的编码规则被称为ASCII码(美国标准信息交换码)。随着计算机在其他国家的逐渐应用和普及,许多国家都把本地的字符集引入了计算机,同时对字符的编码规则进行了适当调整。以中文为例,一个字节所能表示的数字范围是不能容纳所有的中文汉字的。中国大陆将每一个中文字符都用两个字节的数字来表示,原有的ASCII码字符的 编码保持不变。中国大陆为每一个中文字符都指定了一个对应的数字,并作为标准的编码固定了下来,这套编码规则称为GBK(国标码)。后来又在GBK的基础上对更多的中文字符(包括繁体)进行了编码。新的编码系统就是GB2312,而GBK则是GB2312的子集。   在一个国家的本地化系统中出现的一个字符,通过电子邮件传送到另外一个国家的本地化系统中,看到的就不是那个原始字符了,而是另外那个国家的一个字符或乱码,因为计算机里面并没有真正的字符,字符都是以数字的形式存在的,通过邮件传送一个字符,实际上传送的是这个字符对应的编码数字。同一个数字在不同的国家和地区代表的很可能 是不同的符号。随着世界各国的交往越来越密切,全球一体化的趋势越来越明显,人们不可能完全忘记母语,都去使用英文。当前在不同的国家和地区间交换的电子文档越来越多,特别是人们开发的应用软件都希望能走出国门、走向世界。可见,各个国家和地区都使用各自不同的本地化字符编码,已经给生活和工作带来了很多不方便,严重制约了国家和地区间在计算机使用和技术方面的交流。   为了解决各个国家和地区使用各自不同的本地化字符编码带来的不便,人们将全世界所有的符号进行了统一编码,称之为Unicode编码。   长期养成的保守习惯不可能一下子就改变过来,特别是不可能完全推翻那些已经存在的运行良好的系统。新开发的软件要做到瞻前顾后,既能够在存在的系统上运行,又便于以后的战略扩张和适应新的形势。当前,Unicode一统天下的局面暂时还难以形成,在相当长的一段时期内,人们看到的都是本地化字符编码与Unicode编码共存的景象。既然本地化字符编码与Unicode编码共存,那就少不了涉及两者之间的转化问题,在Java中字符使用的都是Unicode编码,Java技术在通过Unicode保证跨平台特性的前提下也支持了全扩展的本地平台字符集,而显示输出和键盘输入都采用本地编码。下面通过范例来介绍字符乱码问题。在这里使用 String类中的get Bytes()方法,为字符进行编码转换。   输出结果如图10-10所示。 图10-10 正常输出文字,无编码问题   输出结果如图10-11所示。   可以看出,输出结果出现了乱码,这是为什么呢?这就是本节所要讨论的字符编码问题。之所以产生这样的问题,是因为在运行这段代码之前,先运行了setDemo.java程序,此程序主要用来设置JDK环境的编码问题,所以乱码主要是由于JDK设置环境所引起的。 图10-12 输出结果 10.5 对?象?序?列?化   所谓的对象序列化(也叫串行化),是指将对象转换成二进制数据流的一种实现手段,通过将对象序列化,可以方便地实现对象的传输及保存。   在Java中提供了ObjectInputStream与ObjectOutputStream这两个类用于序列化对象的操作。这两个类用于存储和读取对象的输入/输出流类。只要把对象中的所有成员变量都存储起来,就等于保存了这个对象,之后从保存的对象之中再将对象读取进来就可以继续使用此对象。ObjectInputStream与ObjectOutputStream类可以帮助开发者完成保存和读取对象成员变量取值的过程,但要求读/写或存储的对象必须实 实现了Serializable接口。Serializable接口中没有定义任何方法,仅仅被用做一种标记,以被编译器作特殊处理。   【例10-16】 Person.java。   程序说明:   (1) 第12行至第18行声明一个serialize()方法,此方法用于将对象保存在文件之中。   (2) 第14行、第15行为ObjectOutputStream对象实例化,此对象通过FileOutputStream对象实例化,所以此类在保存Person对象时向文件中输出。   (3) 第20行至第26行声明一个deserialize()方法,此方法用于从文件中读取已经保存的对象。   (4) 第22行、第23行为ObjectI

您可能关注的文档

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档