Java基础笔记 – 继承InputStream自定义一个简单的字节数组输入流
本文由发表于6年前 | Java基础 | 评论数 2 |  被围观 8,921 views+
自定义一个字节数组:1、实现:2、调用

Java基础笔记 – IO流分类详细介绍和各种字节流类介绍与使用 过滤流 字节流2.2.1、字节输出流的抽象类及其最关键的方法,可知,只有最后一个方法才是抽象的,原因是前面两个都调用了第三个抽象方法,这样继承这个抽象类的子类都必须提供抽象的write(int b)的实现,从而使得每个子类的实现都不一样。

所以这样我们就可以编写自己的IO流类了,只要继承InputStream类并实现其中的抽象方法:abstract void write(int b)。

而其他两个已实现的方法会自动调用这个抽象方法的实现方法。

自定义一个字节数组:
1、实现:
/**
 * 自定义一个字节数组输入流类
 * @author arthinking
 */
public class MyInputStream extends InputStream {

    //需要处理的字节数组
    protected byte[] data;
    //开始读取的位置
    protected int ptr = 0;

    public MyInputStream(byte[] data){
        this.data = data;
    }

    @Override
    public int read() throws IOException {
        if(ptr < data.length)
            return data[ptr++];
        else
            return -1;
    }
}
2、调用
public static void main(String[] args) throws IOException {
    String name = "abcdefg";
    //这里保存的是字符的ascII码
    byte[] b = name.getBytes();

    MyInputStream mis = new MyInputStream(b);
    while(true){
        int c = mis.read();
        if(c == -1){
            break;
        }
        System.out.println(c);
    }
}
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notebook-a-custom-inputstream-inherits-a-simple-byte-array-input-stream.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/22
文章评论
    2条评论
  1. hua 2014年06月04日07:54:48  #-49楼 回复 回复

    如果read时的data[ptr++]值本身就是-1呢?

给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 UML笔记 OOAD面向对象的分析和设计介绍 2011/10/9
2 8259A初始化过程步骤 2011/4/25
3 Spring与Struts2整合的两种解决方案 2011/5/23
4 开发者不容错过的12款开源JavaScript库 2014/1/26
5 Android中使用Gson解析JSON数据 2011/7/14
6 为交换机进行端口安全的配置 2011/5/20
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.