为了账号安全,请及时绑定邮箱和手机立即绑定

用Buffer方法

用Buffer方法 

int c;

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

bos.write(c);

bos.flush();

}

中是怎么把srcFile中的数据写入到destFile中的?

正在回答

4 回答

此处的read()方法返回的是一个字节,那为什么定义的是int c 呢?不应该是byte c么?有老铁回答下么?谢谢!!

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下载
官方微信