`
zzhangyx
  • 浏览: 68994 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

字节数组输入流 ByteArrayInputStream

    博客分类:
  • JAVA
阅读更多

     ByteArrayInputSteam类从内存中的字节数组中读取数据,因此它的数据源是一个字节数组。这个类的构造方法包括: 
     ByteArrayInputStream(byte[] buf)--------参数buf指定字节数组类型的数据源。 
     ByteArrayInputStream(byte[] buf, int offset, int lenght)-----参数buf指定字节数组类型数据源,参数offset指定从数组中开始读取数据的起始下标位置,lenght指定从数组中读取的字节数。 
    ByteArrayInputStream类本身采用了适配器设计模式,它把字节数组类型转换为输入流类型,使得程序能够对字节数组进行读操作。 
     下面这个ByteArrayTester类演示了 ByteArrayInputStream的用法。 
Java代码  收藏代码
  1. package xiaohang.com;  
  2.   
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.IOException;  
  5.   
  6. public class ByteArrayTester {  
  7.     public static void main(String[] args) throws IOException {  
  8.         byte[] buff = new byte[] { 21567, -1, -99 };  
  9.         ByteArrayInputStream in = new ByteArrayInputStream(buff, 14);  
  10.         int data = in.read();  
  11.         while (data != -1) {  
  12.             System.out.println(data + " ");  
  13.             data = in.read();  
  14.         }  
  15.         in.close();// ByteArrayInputSystem 的close()方法实际上不执行任何操作  
  16.     }  
  17. }  


   以上字节数组输入流从字节数组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类型,取值不变,例如:: 
Java代码  收藏代码
  1. byte b1=15,b2=-1,b3=-9  
  2. int a1=b1,a2=b2,a3=b3; //a1 a2 a3 的取值分别为15, -1和-9  
分享到:
评论

相关推荐

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

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

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

    ByteArrayInputStream和ByteArrayOutputStream分别集成自InputStream和OutputStream这两个输入和输出流,这里我们就来详解Java中ByteArray字节数组的输入输出流的用法,需要的朋友可以参考下

    CharArrayReader 介绍_动力节点Java学院整理

    它和ByteArrayInputStream类似,只不过ByteArrayInputStream是字节数组输入流,而CharArray是字符数组输入流。CharArrayReader 是用于读取字符数组,它继承于Reader。操作的数据是以字符为单位!

    Java 中的CharArrayReader 介绍_动力节点Java学院整理

    CharArrayReader 是字符数组输入流。它和ByteArrayInputStream类似,只不过ByteArrayInputStream是字节数组输入流,而CharArray是字符数组输入流。CharArrayReader 是用于读取字符数组,它继承于Reader

    IO体系.java

    |--ByteArrayInputStream/:字节数组输入流。操作的都是内存中的数组,所以不需要关闭。把数组封装到流中,可以提供更多的方法操作数组。 | |--SequenceInputStream/:序列流。将多个读取流合并成一个读取流,可以...

    java72-java-advance.rar

    a) 字符b)字节c)字节数组D)对象 4. 下列流中哪一个使用了缓冲区技术A A.BuffereOutputStream B. FileInputStream C. DataOutputStream D.FileReader 5.下列字节输入流中,哪一个不能够被实例化B A....

    java IO章节的总结

    4)SequenceInputStream:这个类可以将几个输入流串联在一起合并为一个输入流,构造函数有: SequenceInputStream(Enumeration e)枚举类型e中包含了若干个要被串联的输入流 SequenceInputStream(InputStream s1, ...

    JDK_API_1_6

    PushbackInputStream PushbackInputStream 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。 PushbackReader 允许将字符推回到流的字符流 reader。 RandomAccessFile 此类...

    Java之IO流学习总结

    SequenceInputStream 可以认为是一个工具类,将两个或者多个输入流当成一个输入流依次读取。完全可以从IO 包中去除,还完全不影响IO 包的结构,却让其更“纯洁”――纯洁的Decorator 模式。 PrintStream 也可以认为...

    thinkinjava源码-ThinkingInJava:用Java源代码思考

    think in java 源码 ThinkingInJava Thinking In Java Source Code 1、文件过滤器 实现FilenameFilter接口来对...ByteArrayInputStream(字节数组,字节数组即代表内存缓冲区,允许将内存缓冲区当作inputstream使用) S

Global site tag (gtag.js) - Google Analytics