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