閱讀534 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java IO: 字節和字符數組

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

通過InputStream或者Reader讀取數組

為了讓你的組件能夠從數組中讀取數據,你需要把字節或者字符數組包裝到一個ByteArrayInputStream或者CharArrayReader中。這種方式允許通過包裝好的stream或者reader讀取數組中的字節或者字符數據。

這是一個簡單的示例:

01 byte[] bytes = new byte[1024]; 
02  
03 //write data into byte array... 
04  
05 InputStream input = new ByteArrayInputStream(bytes); 
06  
07 //read first byte
08  
09 int data = input.read();
10  
11 while(data != -1) {
12  
13     //do something with data
14  
15     //read next byte     
16  
17     data = input.read();
18  
19 }

操作一個字符數組的代碼與本例類似,隻需要將字符數組包裝到CharArrayReader中。

通過InputStream或者Reader寫入數組

同樣可以將數據寫入到ByteArrayOutputStream或者CharArrayWriter中。你所需要做的是創建一個ByteArrayOutputStream或者CharArrayWriter,然後寫入數據,就像你操作其他類型的stream或者writer一樣。當所有的數據都寫入完畢,隻需調用toByteArray()或者toCharArray(),即可得到寫入數據的數組形式。

這是一個簡單的示例:

1 OutputStream output = new ByteArrayOutputStream();
2  
3 output.write("This text is converted to bytes".toBytes("UTF-8"));
4  
5 byte[] bytes = output.toByteArray();

操作一個字符數組的代碼也與本例類似,隻需要將字符數組包裝到CharArrayWriter中。

最後更新:2017-05-23 14:33:09

  上一篇:go  《Java特種兵》1.1 String的例子,見證下我們的功底
  下一篇:go  分享課丨微軟研究院資深主任研究員鄭宇教授:多源數據融合與時空數據挖掘(一)