黑马程序员技术交流社区

标题: 一个关于BufferedInputStream和BufferedOutputStream的疑问 [打印本页]

作者: 张超超    时间: 2012-4-18 16:54
标题: 一个关于BufferedInputStream和BufferedOutputStream的疑问
Java代码

这样新生成的oneFile_copy文件大小和原文件一样,可里面的内容却只是不断重复"oneFile"中一部分内容。把while循环中的写成下面这样:

Java代码


while(in.read(data) != -1) {content.add(data);data = null;data = new byte[1024];}
之后新生成的文件内容就没有问题了。
小弟不解的就是为什么前一种写法会不行,不重新new data对象为什么就会得到重复的部分数据


作者: liuyang    时间: 2012-4-18 17:04
6.while(in.read(data) != -1) {   
7.content.add(data);
  
8.}  
就像你写的如果上面缺少下面代码
3.data = null;   
4.data = new byte[1024];   
那么你的数组里存的永远是以前的内容,所以也就出现内容重复了
作者: chenwei    时间: 2012-4-18 17:37
data=null;是释放之前的数组占用的空间;data=new byte [1024] ;是创建一个新数组
在做这些是为了初始化数组,清空里面的元素
不清空的话数组里面有元素先直接返回元素,没有的话才会在文件中读取数组放到数组中,再返回
所以才会一直重复






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2