目錄
1.簡介虛擬機與系統
2.ByteArrayInputStream
3.ByteArrayOutputStream
一、簡介虛擬機與系統
我們知道java程序是可以跨平台運行的,它的實現方式則是借助JVM虛擬機,JVM畢竟只是一個虛擬機,他是不能直接操作操作系統上的文件的,
如果需要操作這些文件,j我們需要借助操作系統(OS)來操作文件。java中使用IO流的方式來操作系統中的文件。但是JVM它是可以直接控制內存的。
我們可以利用這一特性將一些重要且並不是很大的數據以而二進制的形式存放在內存中。在java就有這么一組操作字節的流---->字節數組流。
二、ByteArrayInputStream
字節數組輸入流,基本用法跟文件操作流差不多,具體步驟為:
1.數據源(二進制)
2.創建流
3.數據讀取操作
4.釋放資源
以下是byteArrayInputStreamDemo:
package com.demo.io; import java.io.ByteArrayInputStream; import java.io.IOException; public class ByteArrayStreamDemo { public static void byteArrayInputStreamDemo() throws IOException{ //創建數據源 byte [] b = "hello word".getBytes(); //創建流 ByteArrayInputStream bis = new ByteArrayInputStream(b); //創建緩沖區 byte [] b2 = new byte[5]; int len=-1; //將數據讀到緩沖區中 while((len = bis.read(b2))!=-1){ System.out.println(new String(b2,0,len)); } } public static void main(String[] args) throws Exception { byteArrayInputStreamDemo(); } }
ps:這個流不需要關閉,研究源代碼可知,官方並沒有處理這個,而是交給GC回收的,官方增加這個方法只是增加代碼的整體性。
以下是官方close方法的源碼:
/** * Closing a <tt>ByteArrayInputStream</tt> has no effect. The methods in * this class can be called after the stream has been closed without * generating an <tt>IOException</tt>. */ public void close() throws IOException { }
三、ByteArrayOutputStream
字節數組輸出流,使用步驟稍有不一樣。它的作用是將二進制數據寫入到一個二進制數組中,使用步驟稍有不同:
1.選擇流
2.選取數據源
3.寫入數據
4.獲取數據
一下是byteArrayOutputStreamDemo:
package com.demo.io; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { public static void byteArrayOutputStreamDemo() throws IOException{ byte[] b =null; //選擇流 ByteArrayOutputStream bos = new ByteArrayOutputStream(); //模擬二進制數據 byte[] b2 = "HELLO WORD".getBytes(); //將b2寫入到內存中 bos.write(b2,0,b2.length); bos.flush(); //獲取寫入的數據 b = bos.toByteArray(); System.out.println(b.length+"==>"+new String(b,0,b.length)); } public static void main(String[] args) throws Exception { byteArrayOutputStreamDemo(); } }
