java输入输出流问题

file=createSDFile(path+fileName);output=newFileOutputStream(file);bytebuffer[]=newbyt... file = createSDFile(path + fileName);
output = new FileOutputStream(file);
byte buffer[] = new byte[4 * 1024];
int temp;
while ((temp = input.read(buffer)) != -1) {
output.write(buffer, 0, temp);
//output.write(buffer,0,buffer.length);
}

在while循环里的这两句,有没有什么区别啊?
展开
 我来答
风霜紫兰
2012-02-12 · TA获得超过671个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:341万
展开全部

output.write(buffer, 0, temp);表示读了多少个字节就写多少个字节。最多字节数和buffer长度一样
output.write(buffer,0,buffer.length);表示写buffer数组长度那么多个字节。
追问
那最后的结果是最多相差4 * 1024?
可是实际是相差了好多
追答
无解了。
FileOutputStream fos = new FileOutputStream(new File("c:/kw.txt"));
byte[] buff = new byte[1024];
fos.write(buff,0,buff.length);
fos.flush();
fos.close();
写到记事本上。1024个空格。
itworkers
2012-02-12
知道答主
回答量:8
采纳率:0%
帮助的人:6.8万
展开全部
那最后的结果是最多相差4 * 1024?
###不一定啊!那的看你的buffer实际大小是多少!你可以尝试在循环开始前把 buffer.length 打印出来看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
99306796
2012-02-12
知道答主
回答量:10
采纳率:0%
帮助的人:14.9万
展开全部
就是temp一创建就有4*1024的内存,而buffer.length是它本身的空间大小
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式