7.4过虑流与包装类

 
过滤流与包装类
  • 包装类的概念与作用
  • BufferedInputStream与BufferedOutputStream类
  • DataInputStream与DataOutputStream类
  • PrintStream类
  • ObjectInputStream与ObjectOutputStream类
  • 字节流与字符流的转换
我们在前面部分讲解了各种字节节点类,它们都只具有读写字节内容的方法,以FileInputStream和FileOutputStream为例,它们只能向文件中写入字节或从文件中读取字节,在实际应用中我们往往需要向文件中写入或向文件中读取各种类型的数据,就必须先将其它类型的数据转换为字节数组后写入文件,或者是从文件中读取到的字节数组转换为其它的类型,这会给程序的编写造成困难和麻烦,例如:
  • 通过FileOutputStream对象将一个浮点小数写入到文件中,你感觉有点困难吧?能否通过FileOutputStream对象直接将一个整数写入到文件呢?
  • 假如有个DataOutputStream类提供了往各种输出流对象中写入各种类型的数据(当然包括浮点小数)的方法.你现在所要做的工作就是:传递一个FileOutStream输出流对象给DataOutputStream实例对象和调用DataOutputStream实例对象的用于写入浮点小数的方法.
  • DataOutputStream并没有对应到任何具体的流设备,一定要给它传递一个对应具体流设备的输出流对象,完成类似DataOutputStream功能的类就是一个包装类,也叫过滤流类或处理流类.
  • DataOutputStream包装类的构造函数语法:
           public DataOutputStream(OutputStream out)
DataOutputStream的部分方法列表:
  • public final void writeBoolean(boolean v)
  • public final void writeShort(int v)
  • public final void writeChar(int v)
  • public final void writeInt(int v)
  • public final void writeLong(long v)
  • public final void writeFloat(float v)
  • public final void writeDouble(double v)
  • public final void writeBytes(String s)

 

DataInputStream与上图正好相反.
 
BufferedInputStream与BufferedOutputStream类
  • 缓冲流为I/O流增加了内存缓冲区,增加缓冲区有两个基本目的:
       --  允许JAVA程序一次不只操作一个字节,这样提高了程序的性能.
       --  由于有了缓冲区,使得在流上执行skip,mark和reset方法都成为可能.
  • BufferedInputStream和BufferedOutputStream是JAVA提供的两个缓冲区包装类,不管底层系统是否使用了缓冲区,这两个类在自己的实例对象中创建缓冲区。想想这种缓冲区与底层系统提供的缓冲区的区别。底层系统提供的缓冲区直接与目标设备交换数据,而在包装类中使用的缓冲区,它需要调用那个包装类所包装的那个输出流对象,将缓冲流中的数据输出到目标设备中或者写入到底层缓冲区中,或者是包装类所调用的那个输入流对象,从电目标设备或底层缓冲我中读取数据到包装类的缓冲区中。
  • BufferedInputStream的两个构造函数:
       BufferedInputStream(InputStream in)   //一共有32个字节的缓冲区
       BufferedInputStream(InputStream in,int size)   //一共有size(size一般设为4的整数倍)个字节的缓冲区
  • BufferedOutputStream类的两个构造函数:
       BufferedOutputStream(OutputStream out)  //一共有512个字节的输出缓冲区
       BufferedOutputStream(OutputStream out,int size)   //一共有size个字节的输出缓冲区
  • BufferedReader和BufferedWriter类
    BufferedReader的readLine方法可以一次读取一行文本,BufferedWriter的newLine方法可以向字符流中写入不同操作系统下的换行符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值