首先介紹一下Buffer的使用場景,Buffer是Java NIO中非常重要的一個類,數據在各種Channel的讀寫時都需要這個類來緩沖。
然而Buffer在讀寫之前需要做一些準備工作,比如:在讀取Buffer里的數據之前要先在Buffer里準備好要讀取數據,往Buffer里寫數據時,要找出Buffer里的空余空間或者要清空Buffer等等。做以上事情方法有:clear(), flip(), rewind().因為我經常記不住這幾個方法的功能,所以在此記錄一下, 也供他人查找。
Buffer有幾個下標需要注意:position(當前位置), limit(可度/寫數據 下標的最大值), capacity(實際空間)
1.clear()
使Buffer為一系列新的通道讀取或相對放置 操作做好準備,即為往Buffer中寫數據做好準備
public final Buffer clear()
{
this.position = 0;
this.limit = this.capacity;
this.mark = -1;
return this;
}
2. flip()
使Buffer為一系列新的通道寫入或相對獲取 操作做好準備:它將限制設置為當前位置,然后將位置設置為 0。即為從Buffer中度數據做好準備
public final Buffer flip()
{
this.limit = this.position;
this.position = 0;
this.mark = -1;
return this;
}
3.rewind()
使緩沖區為重新讀取已包含的數據做好準備:它使限制保持不變,將位置設置為 0。
public final Buffer rewind()
{
this.position = 0;
this.mark = -1;
return this;
}
Kyle Wang