1.java.nio中的Buffer
java.nio(NEW IO)是JDK 1.4版本開始引入的一個新的IO API,可以替代標準的Java IO API。NIO與原來的IO有同樣的作用和目的,但是使用的方式完全不同, NIO支持面向緩衝區的、基於通道的IO操作。 NIO將以更加高效的方式進行文件的讀寫操作。
而緩衝區Buffer是一個容器對象,底層的存儲結構爲一個數組。在NIO中,所有的數據都是緩衝區來處理的。而使用緩衝區的好處顯而易見:第一可以減少實際物理的讀寫次數,第二緩衝區創建初始就被分配了內存,這個內存空間一直在被重用,可以減少動態分配和回收內存的次數。
在nio庫中,Buffer是一個抽象類,具體的實現類可以參考下圖
2.long轉byte數組
public static byte[] toByteArray(long value) {
return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong(value).array();
}
3.byte數組轉long
public static long byteArrayToLong(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.allocate(8);
buffer.put(bytes, 0, bytes.length);
buffer.flip();
return buffer.getLong();
}
4.allocate
上面的allocate方法,作用是從堆空間中分配一個容量大小爲capacity的byte數組作爲緩衝區的byte數據存儲器,所有的數據操作,都是在這個byte數組中完成的。