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