FileInputStream in = new FileInputStream("demo/1.txt");int b = 0;while((b = in.read()) != -1){********}這段小代碼應(yīng)該沒(méi)問(wèn)題,我想問(wèn)的就是,如果b是每次能讀取的8位數(shù)據(jù)進(jìn)行判斷后,再進(jìn)入循環(huán)體。那么,b這個(gè)32位的int型變量,在每一次讀取時(shí)是不是就代表了每次只利用了b的32位里的低8位存儲(chǔ)?如果文本中的數(shù)據(jù)剛好有個(gè)低8位就能表示為-1的數(shù)據(jù),這時(shí)候b讀取到怎么判斷ta不是文本結(jié)束的標(biāo)識(shí)而只是內(nèi)容?這里文本結(jié)束標(biāo)識(shí)的-1的2進(jìn)制表示是 32位的么?
1 回答
已采納

天啟之魂
TA貢獻(xiàn)174條經(jīng)驗(yàn) 獲得超85個(gè)贊
8個(gè)字節(jié)能表示的int 字節(jié)值只能是0~255 ?即00000000 ~11111111 ?所以不可能出現(xiàn)剛好低八位表示為-1的數(shù)據(jù)
read()方法只有在讀取?數(shù)據(jù)時(shí) 遇到數(shù)據(jù)的結(jié)尾標(biāo)識(shí) 發(fā)現(xiàn)后面沒(méi)有數(shù)據(jù)可讀的情況下 才會(huì)返回-1
添加回答
舉報(bào)
0/150
提交
取消