黑马程序员技术交流社区
标题:
IO 这一章,S关于tream复制文件 发现个细节
[打印本页]
作者:
嘿嘿小学徒
时间:
2012-12-29 17:58
标题:
IO 这一章,S关于tream复制文件 发现个细节
本帖最后由 dustookk 于 2012-12-29 18:02 编辑
in=new FileInputStream("/home/gaoyihang/Dropbox/Code/Workspaces/HeiMaTest/src/heima/io/Test/iofile.txt");
out=new FileOutputStream("/home/gaoyihang/Dropbox/Code/Workspaces/HeiMaTest/src/heima/io/Test/new.txt");
bis=new BufferedInputStream(in);
bos=new BufferedOutputStream(out);
System.out.println();
byte[] b=new byte[5];
int car;
while((car=bis.read(b))!=-1){
bos.write(b);
}
/*
* 这里会出问题,源文件内容是abcdefg 拷贝完成后新文件里的内容是:
* abcdefg
* ed
* 多出来一个换行符和d,e
*/
复制代码
我自己分析了一下大小为4的数组的内容变化:
0
1
2
3
4
第一次
a
b
c
d
e
第二次
f
g
^
d
e
所以我分析 ^ 处数组中存的是个换行符,说明read()方法扫描到源文件结尾处后,会给数组中添加个'\n' 稍不注意 就会被写到新文件中去
所以
bos.write(b); 一行代码 一定要写成是:
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