Java IO: 位元組和字元陣列
阿新 • • 發佈:2018-12-23
原文連結 作者: 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中。