bytearrayinputstream java_java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)...

本文深入探讨了Java中的ByteArrayInputStream,它是基于字节数组的输入流。ByteArrayInputStream继承自InputStream,其内部包含一个字节数组作为缓冲区。文章详细分析了两个类的构造函数、主要方法以及源码,包括read()、skip()等,并通过示例展示了如何使用ByteArrayInputStream。此外,还对比了InputStream的基本功能和ByteArrayInputStream的实现细节。
摘要由CSDN通过智能技术生成

我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕。

本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的用法。

ByteArrayInputStream 介绍

ByteArrayInputStream 是字节数组输入流。它继承于InputStream。

它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的。

我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据;而ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方法要读取的下一个字节。

InputStream 函数列表

//构造函数

InputStream()intavailable()voidclose()void mark(intreadlimit)booleanmarkSupported()int read(byte[] buffer)abstract intread()int read(byte[] buffer, int offset, intlength)synchronized voidreset()long skip(long byteCount)

ByteArrayInputStream 函数列表

//构造函数

ByteArrayInputStream(byte[] buf)

ByteArrayInputStream(byte[] buf, int offset, intlength)synchronized intavailable()voidclose()synchronized void mark(intreadlimit)booleanmarkSupported()synchronized intread()synchronized int read(byte[] buffer, int offset, intlength)synchronized voidreset()synchronized long skip(long byteCount)

InputStream和ByteArrayInputStream源码分析

InputStream是ByteArrayInputStream的父类,我们先看看InputStream的源码,然后再学ByteArrayInputStream的源码。

1. InputStream.java源码分析(基于jdk1.7.40)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagejava.io;2

3 public abstract class InputStream implementsCloseable {4

5 //能skip的大小

6 private static final int MAX_SKIP_BUFFER_SIZE = 2048;7

8 //从输入流中读取数据的下一个字节。

9 public abstract int read() throwsIOException;10

11 //将数据从输入流读入 byte 数组。

12 public int read(byte b[]) throwsIOException {13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值