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