位置:首页 > Java技术 > Java基础教程 > Java ByteArrayInputStream

Java ByteArrayInputStream

ByteArrayInputStream类类允许在内存中的缓冲区被作为一个InputStream。输入源是一个字节数组。有构造函数如下形式来创建ByteArrayInputStream类对象

取一个字节数组作为参数:

ByteArrayInputStream bArray = new ByteArrayInputStream(byte [] a);

另一种形式中需要一个字节数组,和两个整数,其中脱的第一个字节被读和len是要读取的字节数。

ByteArrayInputStream bArray = new ByteArrayInputStream(byte []a, 
                                                       int off, 
                                                       int len)

一旦有ByteArrayInputStream类对象,再有就是使用helper方法可以用来读取流或做其他的操作在流列表。

SN 方法和描述
1 public int read()
此方法从InputStream中读取数据的下一个字节。返回一个int作为下一个数据字节。如果是文件的末尾则返回-1。
2 public int read(byte[] r, int off, int len)
此方法从输入流读取开始到一个数组中的len个字节。返回读取的字节总数。如果文件末尾,则返回-1。
3 public int available() 
给出了可以从该文件输入流中读取的字节数。返回一个int,让要读取的字节数。
4 public void mark(int read)
这将设置流中的当前标记的位置。该参数给出,可以前的标记位置变为无效读取的字节的最大限制。
5 public long skip(long n)
从流跳过的n字节数。这将返回的实际跳过字节数。

例子:

下面是例子来演示ByteArrayInputStream类和ByteArrayOutputStream对象使用方法:

import java.io.*;

public class ByteStreamTest {

   public static void main(String args[])throws IOException {

      ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);

      while( bOutput.size()!= 10 ) {
         // Gets the inputs from the user
         bOutput.write(System.in.read()); 
      }

      byte b [] = bOutput.toByteArray();
      System.out.println("Print the content");
      for(int x= 0 ; x < b.length; x++) {
         // printing the characters
         System.out.print((char)b[x]  + "   "); 
      }
      System.out.println("   ");

      int c;

      ByteArrayInputStream bInput = new ByteArrayInputStream(b);

      System.out.println("Converting characters to Upper case " );
      for(int y = 0 ; y < 1; y++ ) {
         while(( c= bInput.read())!= -1) {
            System.out.println(Character.toUpperCase((char)c));
         }
         bInput.reset(); 
      }
   }
}

下面是上述程序的运行结果:

asdfghjkly
Print the content
a   s   d   f   g   h   j   k   l   y
Converting characters to Upper case
A
S
D
F
G
H
J
K
L
Y