1. 程式人生 > >Java IO: 位元組和字元陣列

Java IO: 位元組和字元陣列

原文連結 作者: Jakob Jenkov 譯者: 李璟([email protected])

Java中的位元組和字元陣列,經常被用於臨時儲存應用程式內部的資料,所以陣列也是常見的資料來源以及資料流目的地。如果你在程式執行過程中需要頻繁訪問檔案的內容,你可能會願意將檔案載入到陣列中去。當然你可以通過索引直接訪問這些陣列。但是如果你有一個元件的設計初衷是從InputStream或者Reader而非陣列中讀取某些資料呢?

通過InputStream或者Reader讀取陣列

為了讓你的元件能夠從陣列中讀取資料,你需要把位元組或者字元陣列包裝到一個ByteArrayInputStream或者CharArrayReader中。這種方式允許通過包裝好的stream或者reader讀取陣列中的位元組或者字元資料。

這是一個簡單的示例:

byte[] bytes = new byte[1024]; 

//write data into byte array...  

InputStream input = new ByteArrayInputStream(bytes);  

//read first byte 

int data = input.read(); 

while(data != -1) {

    //do something with data

    //read next byte      

    data = input.read(); 

}

操作一個字元陣列的程式碼與本例類似,只需要將字元陣列包裝到CharArrayReader中。

通過InputStream或者Reader寫入陣列

同樣可以將資料寫入到ByteArrayOutputStream或者CharArrayWriter中。你所需要做的是建立一個ByteArrayOutputStream或者CharArrayWriter,然後寫入資料,就像你操作其他型別的stream或者writer一樣。當所有的資料都寫入完畢,只需呼叫toByteArray()或者toCharArray(),即可得到寫入資料的陣列形式。

這是一個簡單的示例:

OutputStream output = new ByteArrayOutputStream();

output.write("This text is converted to bytes".toBytes("UTF-8"));

byte[] bytes = output.toByteArray();

操作一個字元陣列的程式碼也與本例類似,只需要將字元陣列包裝到CharArrayWriter中。