- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章Java数据流课件
可持续性概念 能够记录自己的状态以便将来再生的能力,叫对象的持续性(Persistence) 一个对象是可持续的,意味着可以把这个对象存入磁盘、磁带,或传入另一台机器保存在它的内存或磁盘中。也就是说把对象存为某种永久存储类型。 对象通过写出描述自己状态的数值来记录自己的过程叫持续化(或串行化,Serialization) 持续化的主要任务是写出对象实例变量的数值,如果变量是另一个对象的引用,则引用的对象也要串行化。这个过程是递归的。 Java的可持续性 一个类声明实现Serializable接口时,表明该类加入了对象串行化协议 Serializable接口中没有定义任何方法,只是作为一个标记来指示实现该接口的类可以被持续化 Java中,允许可串行化的对象通过对象流进行传输 例10-5 串行化对象 要串行化一个对象,必须与一定的对象输出/输入流联系起来 通过对象输出流将对象状态保存下来 通过对象输入流将对象状态恢复。 通过java.io包中的ObjectOutputStream和ObjectInputStream两个类实现 前者用writeObject()方法可以直接将对象保存到输出流中,而后者用readObject()方法可以直接从输入流中读取一个对象 串行化对象例 对象的存储 程序10-4 对象的恢复 程序10-5 对象结构表 串行化只能保存对象的非静态成员变量,而不能保存任何成员方法和静态成员变量,并且保存的只是变量的值,对于变量的任何修饰符都不能保存,访问权限(public,protected,private)对于数据域的持续化没有影响 数据会经常变化,状态只是瞬时的对象无法保存其状态,不具有可持续性。如Thread对象或流对象。对于这样的成员变量,必须用transient关键字标明,否则编译器将报错。任何用transient关键字标明的成员变量,都不会被保存 对象结构表 串行化可能涉及将对象存放到磁盘上或在网络上发送数据,这时会产生安全问题。对于一些需要保密的数据,不应保存在永久介质中(或者不应简单地不加处理地保存下来),为了保证安全,应在这些变量前加上transient关键字 数据变量是一个对象时,该对象的数据成员也可以被持续化。对象的数据结构或结构树,包括其子对象树在内,构成了这个对象的结构表 如果一个对象图表中包含了一个对不可持续化对象的引用,而这个引用已用关键字transient加以标记,则这个对象仍可以被持续化 例10-6 于myThread域有transient修饰,所以尽管它为不可持续化元素,但其整个对象仍可持续化 public class MyClass implements Serializable{ public transient Thread myThread; private String customerID; private int total; } transient例 尽管变量customerID是可持续化元素,但由于有transient修饰,所以,整个对象在持续化时不会对它进行持续化 public class MyClass implements Serializeble{ public transient Thread myThread; private transient String customerID; private int total; } 基本字符流 从JDK1.1开始,java.io包中加入了专门用于字符流处理的类 以Reader和Writer为基础派生的一系列类 Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组 字节流中类DataInputStream的readLine方法,可以以字节形式读入,以Unicode形式输出(String readLine()) 读者和写者 读者(Readers)和写者(Writers)提供对不同平台之间数据流数据进行转换的功能 同其他程序设计语言使用ASCII字符集不同,Java使用Unicode来表示字符串和字符 ASCII字符集是以一个字节(8bit)来表示一个字符,所以可以认为一个字符就是一个字节(byte).Unicode是一种大字符集,要用两个字节(16bit)来表示一个字符 InputStreamReaderOutputStreamWriter 这两个类是字节流和读者、写者的接口,用来在字节流和字符流之间作为中介 构造方法 InputStreamReader(InputStream in); //缺省规范 I
您可能关注的文档
最近下载
- 第一章 2.2 水量平衡.ppt
- 《GB/T 19326-2022锻制支管座》.pdf
- 2022年11月陕西省从优秀村社区干部中考试录用200名乡镇街道机关公务员上岸冲刺卷I含答案详解版(3套).docx VIP
- 2020年银行业从业人员职业操守和行为准则.pdf VIP
- 转预备党员思想汇报【银行】.pdf VIP
- 【新教材】人教版(2024)七年级上册英语Unit 4 My Favourite Subject教案.docx
- 米厂恒温仓库工程设计方案.docx
- 2024年党校入党积极分子培训考试必考重点知识汇编(共160题).doc VIP
- 《世界经典神话与传说故事》 测试题及答案.pdf
- 智能制造设备安装与调试职业技能等级标准(2021年).pdf
文档评论(0)