初探JAVA中I/O流(一)

一.流



  流,这里是对数据交换的形象称法。进程是运行在内存中的,在运行的过程中避免不了会与外界进行数据交互。比如将数据从硬盘、控制台、管道甚至是套接字(具体点应该是我们电脑上的网卡)读到我们进程锁所占据的地址空间中。这个数据交换的过程,我们称之为流。在流上的操作就所谓的I/O操作了。

二.装饰者模式



  在介绍JAVA中的I/O操作之前我们先介绍一下装饰者模式。

  装饰者模式就是对象的组合。我们如果给某个类增加新的方法,而且我们并不想修改这个类(或这个类有可能已经编译过无法修改),可以使用继承方式。在随后的时间又有加新的功能,可以再次使用继承的方式。这样虽然简单,但是随着时间的推移会导致我们子类个数迅速的膨胀。如果我们使用装饰者模式可以解决这种尴尬。

  装饰者模式图示

  Car是功能很简单的就只能跑,但是我们先让其天上飞,水里游,自动驾驶,甚至有可能在将来出现更多的功能,我们就可以使用装饰者模式。

    • ICar    抽象构件角色,这个抽象构件可以是一个接口也可以是一个具体的类
    • Car     具体构件角色
    • superCar    装饰者,持有抽象构件的引用
    • FlyCar,WaterCar,AICar    具体装饰角色,为具体构件添加新的功能

  

  创建一个能飞和能游的汽车 new Water(new FlyCar(new car))

三、I/O中的装饰者模式



  有部分类在图中没有表示出来

  Input是抽象构件,FilterInputStream是装饰者

  

时间: 2024-12-20 13:21:27

初探JAVA中I/O流(一)的相关文章

初探JAVA中I/O流(二)

1.缓冲输入文件 FileReader BufferedReader FileReader可以直接对文件进行读操作.但是简化编程,加快读取速度,我们加入了缓冲机制,使用了BufferedReader.BufferedReader内置了一个char[]数组(大小为8192)作为缓冲区,每次调用fill()函数将该缓冲区尽可能填满.而我们自己的程序在调用BufferedReader提供的方法时,实质上是从该缓冲区读取的. BufferedReader中的fill()方法 1 private void

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

JAVA 中的IO流

Java中的IO流是用来处理设备与设备之前的数据传输,在java中以流的形式传输.流分为两类:字节流和字符流. 字节流:InputStream,OutPutSteam.(计算机内的数据都是以字节存储的,字节流可以操作任意数据) 字符流:Reader,Writer.(字符流只能操作字符,但是在实际应用中字符流比较方便) 从操作来看又可以分为:输入流和输出流. 在进行IO流操作的时候分为以下几步:1.导入IO流的包,2.进行IO流的异常处理,3.关闭IO流释放资源. 字节流 ————————————

Java中I/O流之缓冲流

Java 中的缓冲流: 1. 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘). 2. J2SDK 提供了四种缓冲流,其常用构造方法如下: 2.1 BufferedReader(Reader in) // 带缓冲区的输入流:       BufferedReader(Reader in, int size) // 自定义缓冲区的大小: 2.2 BufferedWriter(W

Java中I/O流之Objectt流

Java 中的 object 流:直接将 Object 对象写入或读出 1. serializable 接口:序列化,可以被序列化的,若确实需要将某个类的对象写在硬盘上或网络上,想把他们序列化成一个字节流,就必须实现这个这个接口(标记性接口, 用来标记一下,这个类的对象可以被序列化,那么这个类到底是怎么被序列化的,自己不能控制,是 JDK 直接帮你控制这个类的对象的序列化过程). 2. transient 关键字:用来修饰成员变量 3. externalizable 接口:通过 readExte

java 中 “文件” 和 “流” 的简单分析

java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 //创建一个File 对象,检验文件是否存在,若不存在就创建然后对File package wfu; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.Scanner; pu

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和BufferedOutputStream.以及对应的FileOutputWriter,FileInputReader,BufferedInputReader,BufferedOutputWriter. 3. 转换流InputStreamReader和OutputStreamWriter 一:流的继承关系 字节

java中的缓冲流

一开始,并不明白java中的缓冲流到底有什么作用.OutputStream和BufferedOutputStream有什么区别,两者的write()方法都是一个字节一个字节的写,不同之处就是BufferedOutputStream会将字节先写到一个缓冲区中,然后通过flush()或者关闭这个缓冲流来实现将缓冲流中的数据回显. 之后,通过查阅关于缓冲流的相关知识,了解了一点点,一个字节一个字节的写入到硬盘会耗费时间,而先把数据写入缓冲区的话,再一次性的写入到硬盘或者其他地方,会节省很多时间.从而提

Java中的IO流体系

Java为我们提供了多种多样的IO流,我们可以根据不同的功能及性能要求挑选合适的IO流,如图10-7所示,为Java中IO流类的体系. 注:这里只列出常用的类,详情可以参考JDK API文档.粗体标注为常用! 图10-7 Java中的IO流体系 从上图发现,很多流都是成对出现的,比如:FileInputStream/FileOutputStream,显然是对文件做输入和输出操作的.我们下面简单做个总结: 1. InputStream/OutputStream 字节流的抽象类. 2. Reader