inputstream是很多io流操作的父類,其主要提供以下兩個方法
/**
* 讀取一定長度的資料到陣列
*/public
intread
(byte b,
int off,
int len)
throws ioexception ;
/** * 讀取乙個位元組陣列,內部實現是呼叫上乙個方法
*/public
intread
(byte b)
throws ioexception;
/** * 讀取乙個位元組,具體由子類實現
*/public
abstract
intread()
throws ioexception;
通過原始碼可以發現最主要的方法就是第二,實現如下:
public
intread
(byte b,
int off,
int len)
throws ioexception
else
if(off <
0|| len <
0|| len > b.length - off)
else
if(len ==0)
int c =
read()
;if(c ==-1
) b[off]=(
byte
)c;int i =1;
try b[off + i]=(
byte
)c;}
}catch
(ioexception ee)
return i;
}
read是如何讀取資料的?緩衝區嗎?
起始inputstream是將read方法交給各子類自己去實現,比如fileinputstream、bytearrayinputstream.這裡面還有一些功能增強的裝飾器類如bufferedinputstream
azkaban web server原始碼解析
azkaban主要用於hadoop相關job任務的排程,但也可以應用任何需要排程管理的任務,可以完全代替crontab。azkaban主要分為web server 任務上傳,管理,排程 executor server 接受web server的排程指令,進行任務執行 1.資料表 projects 工...
JDK LinkedHashMap原始碼解析
今天來分析一下jdk linkedhashmap的源 public class linkedhashmapextends hashmapimplements map可以看到,linkedhashmap繼承自hashmap,並且也實現了map介面,所以linkedhashmap沿用了hashmap的大...
Redux原始碼createStore解讀常用方法
const store createstore reducer,preloadedstate enhancer 直接返回當前currentstate,獲取state值,return state 我覺得應該深轉殖乙個新的物件返回,不然有可能會被外部修改 function getstate consol...