A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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()到的长度
复制代码
每次看黑马的学前视频 , 一定要亲手敲一下代码, 不要怕出错, 发现问题解决问题 才是学习的王道!   与大家共勉





评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

3 个回复

正序浏览
分享一个好帖#源码工作室#《【免费下载】Java经典图书大集合》: ...
http://www.chinadays.cn/forum.php?mod=viewthread&tid=3427
回复 使用道具 举报
说实话老毕在视频里讲清楚了的啊{:soso_e103:}
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马