黑马程序员技术交流社区

标题: IO 这一章,S关于tream复制文件 发现个细节 [打印本页]

作者: 嘿嘿小学徒    时间: 2012-12-29 17:58
标题: IO 这一章,S关于tream复制文件 发现个细节
本帖最后由 dustookk 于 2012-12-29 18:02 编辑
  1.             in=new FileInputStream("/home/gaoyihang/Dropbox/Code/Workspaces/HeiMaTest/src/heima/io/Test/iofile.txt");
  2.             out=new FileOutputStream("/home/gaoyihang/Dropbox/Code/Workspaces/HeiMaTest/src/heima/io/Test/new.txt");
  3.             bis=new BufferedInputStream(in);
  4.             bos=new BufferedOutputStream(out);
  5.             System.out.println();
  6.             
  7.             byte[] b=new byte[5];
  8.             int car;
  9.             while((car=bis.read(b))!=-1){
  10.                  bos.write(b);
  11.             }
  12.                 /*
  13.                  * 这里会出问题,源文件内容是abcdefg   拷贝完成后新文件里的内容是:
  14.                  * abcdefg
  15.                  * ed
  16.                  * 多出来一个换行符和d,e
  17.                  */
复制代码
我自己分析了一下大小为4的数组的内容变化:
01 23 4
第一次 ab c d e
第二次f g ^d e







所以我分析 ^ 处数组中存的是个换行符,说明read()方法扫描到源文件结尾处后,会给数组中添加个'\n'  稍不注意 就会被写到新文件中去

所以 bos.write(b); 一行代码 一定要写成是:
  1. bos.write(b, 0, car);  //car返回的是 每次read()到的长度
复制代码
每次看黑马的学前视频 , 一定要亲手敲一下代码, 不要怕出错, 发现问题解决问题 才是学习的王道!   与大家共勉






作者: 轻松过关    时间: 2012-12-29 18:04
{:soso_e179:}
作者: 清水    时间: 2012-12-30 14:46
说实话老毕在视频里讲清楚了的啊{:soso_e103:}
作者: 鸿钧弟子    时间: 2012-12-30 14:48
分享一个好帖#源码工作室#《【免费下载】Java经典图书大集合》: ...
http://www.chinadays.cn/forum.php?mod=viewthread&tid=3427




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