`
byandby
  • 浏览: 1697359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字节数组输入流 ByteArrayInputStream

阅读更多
     ByteArrayInputSteam类从内存中的字节数组中读取数据,因此它的数据源是一个字节数组。这个类的构造方法包括:
     ByteArrayInputStream(byte[] buf)--------参数buf指定字节数组类型的数据源。
     ByteArrayInputStream(byte[] buf, int offset, int lenght)-----参数buf指定字节数组类型数据源,参数offset指定从数组中开始读取数据的起始下标位置,lenght指定从数组中读取的字节数。
    ByteArrayInputStream类本身采用了适配器设计模式,它把字节数组类型转换为输入流类型,使得程序能够对字节数组进行读操作。
     下面这个ByteArrayTester类演示了 ByteArrayInputStream的用法。
package xiaohang.com;

import java.io.ByteArrayInputStream;
import java.io.IOException;

public class ByteArrayTester {
	public static void main(String[] args) throws IOException {
		byte[] buff = new byte[] { 2, 15, 67, -1, -9, 9 };
		ByteArrayInputStream in = new ByteArrayInputStream(buff, 1, 4);
		int data = in.read();
		while (data != -1) {
			System.out.println(data + " ");
			data = in.read();
		}
		in.close();// ByteArrayInputSystem 的close()方法实际上不执行任何操作
	}
}


   以上字节数组输入流从字节数组buff的下标为1的元素开始读,一共读取4个元素。对于读到的每一个字节类型的元素,都会转换为int类型。
    例如:对于字节类型的15,二进制形式为00001111,转换为int类型的二进制形式为
00000000 00000000 00000000 00001111,因此字节类型的15 转换为int类型仍然是15;对于字节类型的-1,二进制形式为 11111111,转换为int类型的二进制形式为
00000000 00000000 00000000 11111111 ,因此字节类型的-1 转换为int类型是255;对于字节类型的-9,二进制形式为 11110111, 转换为int类型的二进制形式为 00000000 00000000 00000000 11110111, 因此字节类型的-9转换为 int类型是 247。

   以上字节数组输入流在读取了4个字节后,就达到了输入流的末尾,在执行read()方法,就会返回-1。以上程序的打印结果为:



   需要指出的是,这里所说的把byte类型转换为int类型,与赋值运算中的类型转换是两回事。在赋值运算中,把byte类型赋给int类型,取值不变,例如::
       byte b1=15,b2=-1,b3=-9
       int a1=b1,a2=b2,a3=b3; //a1 a2 a3 的取值分别为15, -1和-9
  • 大小: 12.1 KB
分享到:
评论

相关推荐

    ByteArrayInputStream简介和使用_动力节点Java学院整理

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

    详解Java中ByteArray字节数组的输入输出流的用法

    总的来说,ByteArrayInputStream和ByteArrayOutputStream是Java中处理字节数组输入输出的便捷工具,它们在处理小规模数据、内存中操作以及测试场景下非常实用。理解并熟练掌握这两个类的用法,对于提升Java IO编程...

    【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

    在Java编程中,我们经常会遇到需要将字节数组转换为输入流的情况,这时ByteArrayInputStream就派上了用场。它的构造函数接受一个byte数组作为参数,然后我们可以调用read()方法来逐个读取字节,或者使用read(byte[])...

    Java中对象的序列化方式克隆详解

    // 创建对象输入流,从字节数组输入流中读取对象 ObjectInputStream in = new ObjectInputStream(byteIn); // 反序列化,得到新的对象 Object cloneObj = in.readObject(); return cloneObj; } catch ...

    TextProject

    "TextProject"可能是一个关于GIF图像处理的项目,它涉及到对GIF图像的帧数解析、字节数组转换以及输入流操作。让我们深入探讨这些关键知识点。 1. **GIF帧数解析**: GIF文件结构中包含了多个图像描述块,每个块...

    java io 流,文件读取操作

    ByteArrayInputStream 是一种字节数组流,用于从字节数组中读取数据。 Java IO 流是 Java 语言中的一种基本输入/输出机制,提供了多种方式来处理输入/输出操作。它的分类、抽象类、基本方法和各种流类型都是 Java ...

    Java byte数组操纵方式代码实例解析

    Java中处理字节数组的方法多样,包括基本类型的转换、输入输出流的使用等。了解并熟练运用这些方法,对于处理二进制数据和优化性能至关重要。在实际开发中,根据需求选择合适的数据结构和方法,可以显著提高代码的...

    内存操作流

    1. `ByteArrayInputStream`: 这个类是从字节数组读取数据的输入流。当我们已经有一个字节数组,想要从中读取数据时,可以使用`ByteArrayInputStream`。例如,`ByteInp.java`可能包含一个实例,用于创建一个`...

    Java实现字节流与图片的转化

    在Java中,字节流分为两种类型:输入字节流(InputStream)和输出字节流(OutputStream)。它们分别用于读取和写入数据。字节流通常用于处理非文本文件,因为这些文件由一系列字节组成,而不是字符。 要实现字节流...

    Java IO流 总结

    * read(字节数组):从输入流中读取数据到字节数组中 * a)中间容器 byte[] flush = new byte[长度] * b)接收长度 int len = 0 * c) 循环读取 while (-1 != (len = 流.read(flush))) * d)操作输出、拷贝 b) 输出...

    将输出流OutputStream转化为输入流InputStream的方法

    在实际开发中,`PipedOutputStream`和`PipedInputStream`也可以用来实现输出流和输入流之间的连接,它们之间可以通过管道进行数据传输,但这种方式相对复杂,适用于更高级的同步和异步操作。 总结,将`OutputStream...

    java的输入输出流

    而ByteArrayInputStream则允许我们从一个字节数组中读取数据。 对于输出流,OutputStream类是所有字节输出流的基类,包含write(int)、close()和flush()方法,分别用于写入字节、关闭流和清空缓冲区。例如,...

    java IO章节的总结

    - `ByteArrayInputStream(byte[] buf)`:使用指定的字节数组作为缓冲区。 - `ByteArrayInputStream(byte[] buf, int offset, int length)`:使用指定偏移量和长度的字节数组部分作为缓冲区。 2. **...

    javaIO流[归纳].pdf

    - **字节数组流**:ByteArrayInputStream和ByteArrayOutputStream用于在内存中操作字节数组。例如,可以通过ByteArrayOutputStream创建一个字节数组,然后通过ByteArrayInputStream读取该数组。 Java IO流体系结构...

    Java程序设计精编教程输入流与输出流PPT学习教案.pptx

    数组流(ByteArrayInputStream, ByteArrayOutputStream)允许我们将字节数组视为流,方便数据的转换和存储。数据流(DataInputStream, DataOutputStream)则支持基本数据类型的读写,如int、float等,确保数据在网络...

    JAVA 字符流与字节流

    - **ByteArrayInputStream** 和 **ByteArrayOutputStream**:用于在内存中操作字节数组。 - **BufferedInputStream** 和 **BufferedOutputStream**:增加了缓冲机制,提高了读写效率。 - **DataInputStream** 和 **...

    JAVA输入流和输出流

    - ByteArrayInputStream:从内存中的字节数组读取数据。 - BufferedInputStream:对输入流进行缓冲,提高读取效率。 **2. 输出流(OutputStream)** 输出流同样位于`java.io`包,它是所有写入数据的类的基类。它...

Global site tag (gtag.js) - Google Analytics