JAVA IO---

java将流分为两类:节点流与处理流(低级流与高级流)

  • 节点流:也称之为低级流

节点流(低级流)的另一端是明确的,另一端是需要读写的数据,是实际读写数据的流,读写一定是建立在节点流基础上进行的。

  • 处理流也称之为高级流

处理流不能独立存在,必须连接在其他流上,其他流可以是高级流(处理流),也可以是低级流(节点流),目的是当数据流警方当前流时,对数据进行加工处理来简化我们对数据的操作。

实际应用中,我们可以串联一组高级流到某个低级流上以流水线式的加工处理对某个设备的数据进行读写,这个过程也称之为流的连接,这也是io的精髓。

缓冲流

缓冲流是一对高级流(处理流),在流连接中,它的作用是加快读写速率。缓冲流中有一个默认8k的缓冲区。缓冲流总是块读写数据来提高读写效率

java.io.BufferedOutputStream   缓冲字节输出流,继承java.io.OutputStream。

java.io.OutputStream是所有字节流的超类

常用构造器

  • 创造一个默认8kb大小的缓冲区的缓冲输出字节流,并连接到参数指定的字节输出流上。
public BufferedOutputStream(OutputStream out) {
        this(out, 8192);
    }
  • 创建一个size指定大小(单位是字节)缓冲区的缓冲字节输出流,并连接到参数指定的字节输出流上
public BufferedOutputStream(OutputStream out, int size) {
        super(out);
        if (size <= 0) {
            throw new IllegalArgumentException("Buffer size <= 0");
        }
        buf = new byte[size];
    }

常用方法

flush():强制将缓冲区中已缓存的数据一次性写出

字节缓冲流的写出方法的工作原理与字节输出流的块写方法工作原理相同,调用write方法后并非实际写出,而是先将书v就存入缓冲区中,当缓冲区存满后会自动写出一次

  public synchronized void flush() throws IOException {
        flushBuffer();
        out.flush();
    }

对象流

对象流是一对高级流,在流连接中的作用是将对象的序列化和反序列化

序列化:是对象输出流的工作,将一个对象按照结构转换为一组字节的过程

反序列化:是对象输入流的工作,将一组字节和官员称对象的过程

对象输入流  ObjectInputStream  继承inputstream  也属于字节流

public class ObjectInputStream
    extends InputStream implements ObjectInput, ObjectStreamConstants

常用的构造方法

创建一个对象输入流并连接到参数in这个字节输入流上

public ObjectInputStream(InputStream in) throws IOException {
        verifySubclass();
        bin = new BlockDataInputStream(in);
        handles = new HandleTable(10);
        vlist = new ValidationList();
        serialFilter = ObjectInputFilter.Config.getSerialFilter();
        enableOverride = false;
        readStreamHeader();
        bin.setBlockDataMode(true);
    }

常用方法

进行对象反序列化,将对取的字节转化为一个对象并以object形式返回(多态)

如果读取到的字节表示的不是一个java对象,会抛出异常ClassNotFoundException

private String readString() throws IOException {
        try {
            return (String) readObject(String.class);
        } catch (ClassNotFoundException cnf) {
            throw new IllegalStateException(cnf);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值