染红_街道
2016-07-03 21:25
int num = 0; while ((num = inf.read(buf)) != -1) { outf.write(buf, 0, num); outf.flush(); //////////////////////////////位置1 } /////////////////////////////位置2 outf.close(); inf.close(); 放在两处有什么区别 亲测 当文件小时(3M),放在while里面速度反而不如放在位置2、 当文件特别大时(4G),放在哪速度都一样, 求解释原理
一般都放到位置2.
flush()是将缓冲区中的字节立即写入目标对象(比如文件),一般用在带缓冲的流中,你这个方法是不带缓冲的,是否flush都一样。
flush需要在网络传输的时候使用,避免在文件close之前还有东西在缓冲区中没有读完,看完意思之后你就应该发现放在位置2比较合适,因为说白了就是对付close的一个工具,他在while循环里面有什么意义呢,放close前即可,没有必要太讲究速度,知道原理选择最正确的方式即可
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题