Java中IOUtils.copy(in,out)方法,关于缓冲byte[]buffer的问题

内部的缓冲byte[]buffer,定义的大小为4096,如果要写的io流内容超过这个大小呢
贴个源码:
publicstaticintcopy(InputStreaminput,OutputStreamoutput)throwsIOException{
longcount=copyLarge(input,output);
if(count>Integer.MAX_VALUE){
return-1;
}
return(int)count;
}
publicstaticlongcopyLarge(InputStreaminput,OutputStreamoutput)
throwsIOException{
returncopyLarge(input,output,newbyte[DEFAULT_BUFFER_SIZE]);//大小为4096
}
publicstaticlongcopyLarge(InputStreaminput,OutputStreamoutput,byte[]buffer)
throwsIOException{
longcount=0;
intn=0;
while(EOF!=(n=input.read(buffer))){
output.write(buffer,0,n);
count+=n;
}
returncount;
}
也没看见对buffer有什么别的处理呀?如果buffer大小不够呢?
青春有我
浏览 2811回答 2
2回答

白衣染霜花

你觉得缓冲区应该有多大?如果你要复制一个几百MB的文件,那缓冲区也要有几百MB大小?缓冲区就像一个推车,来往于i/o端,运送数据,作用就是减少了来往的次数,减少了开销。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript