inputStream原始碼解讀

2021-09-26 23:51:21 字數 1043 閱讀 9836

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...