java之字节数组输出流和输入流的理解(文字版)

首先我将API粘贴一下:

字节数组输出流:

java.io
类 ByteArrayOutputStream

java.lang.Object
  java.io.OutputStream
      java.io.ByteArrayOutputStream
所有已实现的接口:
Closeable, Flushable


public class ByteArrayOutputStream
extends OutputStream

此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。

关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException

从以下版本开始:

JDK1.0

字节数组输入流:

java.io

类 ByteArrayInputStream

java.lang.Object
  java.io.InputStream
      java.io.ByteArrayInputStream
所有已实现的接口:
Closeable


public class ByteArrayInputStream
extends InputStream

ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。

关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException

从以下版本开始:
JDK1.0

然后我说说个人理解:

          其实我们抛开别的不说,就拿文件输入流FileInputStream文件输出流FileOutputStream来做比较学习,其实字节数组输入流和输出流仅仅是目标指向了字节数组而已;

          简单来说 :ByteArrayOutputStream就是将数据写入了一个可变大小的byte 数组中,至于这个数组是谁,这个数组在哪,我们不用关心,因为我们有了这个输出流,我们就有了可以操作这个byte 数组一个对象,那么我们就可以通过调用对象的方法方便地操作这个数组.这已经足够了!       一言以蔽之:我(字节输出流)往byte数组里输出数据,然后我又操作这个数组;

         我们再来说一说ByteArrayInputStream,就是从一个byte 数组里边读取数据到内存的缓冲区,然后可以利用这个输入流的对象对缓冲区数据进行特定操作.    一言以蔽之:我(字节输入流)将byte数组里的数据读入缓冲区,然后我又操作这个缓冲区;







你可能感兴趣的:(java)