阶段一笔记代码16-io_第1页
阶段一笔记代码16-io_第2页
阶段一笔记代码16-io_第3页
阶段一笔记代码16-io_第4页
阶段一笔记代码16-io_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、IO字节流主讲人:任亮今日内容Map的功能HashMapTreeMapHashTableLinkedHashMap字节流概述字节输入流:InputStream:常用子类FileInputStream字节输出流:OutputStream:常用子类FileOutputStreamOutputStream字节输出流构造器OutputStream范例:使用字节流向文件中写入”helloworld”分析:使用三种写入方法InputStream因为InputStream是抽象类,我们要学习的是它的子类。字节输入流构造器InputStream读取字节流方法:InputStream范例:使用字节输入流来读取文

2、件并且输出到控制台。InputStream范例2:使用字节流来拷贝文件。字节流的高效缓冲区字节流的高效缓冲区构造器字节流的高效缓冲区范例:使用高效缓冲区来复制文件来比较性能字节流的高效缓冲区范例:从键盘输入学生信息存储到文件中,学生按着年龄排序。设计模式之装饰者模式装饰者模式的目的是给类的功能增强。继承也能给类的功能增强Writer类是写文件的类,有三个子类TxtWriter,MP3Writer,AVIWriter在writer中定义了写文件的标准,三个子类分别去实现Writer中的写方法使用继承方式来对类增强Writer |TxtWriter |MP3Writer |AVIWriter通过继

3、承方式加入高效缓冲区设计模式之装饰者模式Writer |TxtWriter |BufferedTxtWriter |MP3Writer |BufferedMP3Writer |AVIWriter |BufferedAVIWriter |RMWriter |BufferedRMWriter如果想继续添加写文件的子类,如果想要对它做增强,还需要创建相应的缓冲区。装饰器的设计模式可以解决我们使用高效缓冲区,但是不需要每一个写文件的类都添加高效缓冲区。如果写文件的缓冲区是同样的原理,那么我们就可以把缓冲区抽取出来作为装饰器。设计模式之装饰者模式角色:1.抽象构件角色(定义写文件标准):Writer2.

4、具体的构件角色(实现写文件标准):三个子类TxtWriter,MP3Writer,AVIWriter3.装饰角色抽象(高效缓冲区):注意:也可定义成抽象的,如果是抽象的就必须要有具体抽象角色4.具体的装饰角色:来实现抽象装饰器中的增强方法。设计模式之装饰者模式抽象构件角色public abstract class Writer /* * 写文件的方法 * author renliang */public abstract void writeFile();设计模式之装饰者模式具体构件角色:public class TxtWriter extends Writer Overridepublic

5、void writeFile() System.out.println(写入文本文件);设计模式之装饰者模式装饰器:public class BufferedWriterFile extends Writer private Writer writer;public BufferedWriterFile(Writer writer)this.writer = writer;Overridepublic void writeFile() this.bufferedWrite();writer.writeFile();public void bufferedWrite()System.out.pr

6、intln(加入高效缓冲区);设计模式之装饰者模式抽象装饰角色:public abstract class BufferedWriterFile extends Writer private Writer writer;public BufferedWriterFile(Writer writer)this.writer = writer;Overridepublic void writeFile() this.bufferedWrite();writer.writeFile();this.clean();public abstract void bufferedWrite();public

7、abstract void clean();设计模式之装饰者模式具体装饰角色:public class BufferedWriterFileImpl extends BufferedWriterFile public BufferedWriterFileImpl(Writer writer) super(writer);Overridepublic void bufferedWrite() System.out.println(加入高效缓冲区);Overridepublic void clean() System.out.println(做清理工作);字符流和字节流的转换桥梁字节流转换字符流(

8、输入)InputStreamReader范例:把从键盘输入的文本写入到文件中字符流和字节流的转换桥梁字符流转换成字节流(输出)OutputStreamWriter 是字符流通向字节流的桥梁字符流和字节流的转换桥梁字符流转换成字节流范例:从一个文件中读取内容使用标准字节流来输出到控制台(使用字符串操作)打印流打印流:只做输出没有输入打印流分为字节打印流和字符打印流PrintWriter:字符打印流特点1.可以打印各种数据类型。2.封装了字符输出流,还可以字符流和字节流的转换3.可以使用自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作4.可以

9、直接向文件中写数据打印流范例:使用打印流向文件中打印数据打印流范例:从文件中读取数据并且打印在控制台打印流范例:使用打印流来复制文本文件Properties类Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 特点:1.继承于HashTable,是线程安全的键值对存储结构2. Properties 可保存在流中或从流中加载3. 只能保存字符串的键值对。Properties类常用方法:Properties类常用方法:Properties类范例:使用Properties类存取Properties类范例:把属性类

10、的对象数据写入文件Properties类范例:把属性类的对象数据写入文件方式2Properties类范例:把属性类的对象数据写入文件方式3Properties类范例:从txt文件中加载属性信息序列化流(对象流)范例:从txt文件中加载属性信息把对象以流的形式存储在硬盘上或者数据库中的过程就是写序列化流序列化流:对象输出流:ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。对象输入流:ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。序列化流(对象流)序列化流(对象流)如果想序列化某个对象,那么这个对象所对应的类必须实现类通过实现 java.io.Serializable 接口以启用其序列化功能,在序列化的过程中要手动指定要序列化的类的的serialVersionUID,这样可以在类改变后依然可以反序列化,否则会报错。字符编码存储:在计算机中存储字符都是存储的字符所对应的数值以二进制的形式表示。展示:去相关的编码表中去查找该值(存储的值)所对应的字符。常见的:ASCII表:用7bit来表示存储数据ISO-8859-1:拉丁码表用8bit来表示GB2312:简体中文编码(国标码)字符编码GBK:gb2312做了增强GB18030:对GBK做了增强BIG5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论