Merlin 的魔力
作者:
Merlin 的魔力
Merlin 的新 I/O 緩沖區的輸入和輸出
英文原文
內容:
緩沖區基礎
緩沖區類型
直接 vs
內存映射文件
結束語
參考資料
關於作者
對本文的評價
相關內容
Merlin 給 Java 平台帶來了非阻塞 I/O
Working XML: Wrestling with Java NIO
T徹底轉變流
Merlin的魔力
developerWorks Toolbox subscription
在 Java 專區還有
工具與產品
代碼與組件
所有文章
實用技巧
了解如何操作 J
級別
John Zukowski
總裁
Merlin 的魔力
中
Java
J
類(NIO)
java
包中
I/O 執行輸入和輸出操作
Java I/O 的其它信息
參考資料
緩沖區基礎
抽象的
Buffer
java
包支持緩沖區的基礎
Buffer
的工作方式就象內存中用於讀寫基本數據類型的
RandomAccessFile
RandomAccessFile
一樣
Buffer
Buffer
提供了四個指示方法
capacity()
limit()
:limit(int newLimit)
來改變這個限制
position()
mark()
reset()
進行重新設置而記住某個位置
緩沖區的基本操作是
get()
put()
flip()
方法交換限制和位置
清單
import java
CharBuffer buff =
buff
buff
char c = buff
System
現在讓我們研究一些具體的
Buffer
子類
緩沖區類型
Merlin 具有
Buffer
類型
boolean)
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
在本文後面
MappedByteBuffer
ByteBuffer
獲得字節類型
Object
或其它任何類型
正如前面所提到的
get()
put()
方法
get()
put()
方法
CharBuffer
get()
獲得下一個字符
get(int index)
獲得某個特定位置的字符
get(char[] destination)
獲得一串字符
CharBuffer
為例
CharBuffer
可以將
String
對象轉換成
CharBuffer
CharBuffer
清單
import java
public class ReadBuff {
public static void main(String args[]) {
if (args
CharBuffer buff = CharBuffer
for (int i=
請注意
get()
get(index)
get()
操作之後
直接 vs
既然已經了解了典型的緩沖區
ByteBuffer
這個級別上創建直接緩沖區
Buffer
轉換成更具體的類型
清單
import java
public class ReadDirectBuff {
public static void main(String args[]) {
if (args
String arg = args[
int size = arg
ByteBuffer byteBuffer = ByteBuffer
CharBuffer buff = byteBuffer
buff
buff
for (int i=
在上面的代碼中
String
包裝在直接
ByteBuffer
中
size*
內存映射文件
第
Buffer
MappedByteBuffer
只是一種特殊的
ByteBuffer
MappedByteBuffer
將文件所在區域直接映射到內存
Buffer
對象一樣
java
map()
方法來獲取
MappedByteBuffer
getChannel()
方法從
FileInputStream
FileOutputStream
FileChannel
MappedByteBuffer
清
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25294.html