亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

用Buffer方法

用Buffer方法?

int c;

while((c=bis.read())!=-1){

bos.write(c);

bos.flush();

}

中是怎么把srcFile中的數據寫入到destFile中的?

正在回答

4 回答

此處的read()方法返回的是一個字節,那為什么定義的是int c 呢?不應該是byte c么?有老鐵回答下么?謝謝?。?/p>

0 回復 有任何疑惑可以回復我~
#1

linhbo

你看一下api,里面分別定義了返回int和byte的方法,兩個都OK,具體信息自行查看吧
2017-10-19 回復 有任何疑惑可以回復我~
#2

qwertyuioplkjh

int比byte更大,相當于向上轉型
2017-10-21 回復 有任何疑惑可以回復我~

你說的c代表一個長度,是FileInputStream中的read()方法,

read(byte[]?b, int?off, int?len)
??????????從此輸入流中將最多 len 個字節的數據讀入一個 byte 數組中。

此時返回的c是讀入緩沖區的字節總數,也就是你指的長度了。

1 回復 有任何疑惑可以回復我~

你可以查看inputstream的read()方法

read()
??????????從輸入流中讀取數據的下一個字節

c是一個byte

更直觀一點的話,你可以通過打印c并且通過對c被寫入的次數計數來看

int?c;
		int?count=0;
		while((c?=?bis.read())!=?-1){
			System.out.println(c);
			count++;
			bos.write(c);
			bos.flush();
		}
		System.out.println("c被寫入了"+count+"次");


1 回復 有任何疑惑可以回復我~
#1

qq_noheartnoswe_04385033 提問者

剛查了,,,1次。
2016-12-18 回復 有任何疑惑可以回復我~
#2

qq_3_16 回復 qq_noheartnoswe_04385033 提問者

49 50 51 c被寫入了3次 這是我的執行結果,srcfile中只有abc三個字符。
2016-12-18 回復 有任何疑惑可以回復我~
#3

qq_3_16 回復 qq_noheartnoswe_04385033 提問者

檢查一下你的main函數吧
2016-12-18 回復 有任何疑惑可以回復我~

c=bis.read()來讀取,bos.write(c)將要寫入的c放入緩沖區,bos.flush()刷新緩沖區,也將c寫入文件中了

0 回復 有任何疑惑可以回復我~
#1

qq_noheartnoswe_04385033 提問者

c不是代表的一個int是一個長度嗎?
2016-12-18 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

用Buffer方法

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號