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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 潘际昌 于 2013-11-24 00:56 编辑

import java.io.*;
public class RuXue6 {

        public static void main(String[] args)
        {
                BufferedOutputStream bo=null;
                BufferedInputStream bi=null;
                try
                {
                        bi=new BufferedInputStream(new FileInputStream("f:\\Demo.txt"));
                        bo=new BufferedOutputStream(new FileOutputStream("f:\\Demo_copy.txt"));
                        byte[] buf=new byte[1024];
                        int len=bi.read(buf);
                        while(len!=-1)
                        {
                                bo.write(buf, 0,len);
                                bo.flush();
                        }
                }
                catch(IOException e)
                {
                        System.out.println("你的路径是错误的!");
                        
                }
                finally
                {
                        if(bi!=null)
                        {
                                try
                                {
                                        bi.close();
                                }
                                catch(IOException e)
                                {
                                        System.out.println("读取流关闭失败!");
                                }
                        }
                        if(bo!=null)
                        {
                                try
                                {
                                        bo.close();
                                }
                                catch(IOException e)
                                {
                                        System.out.println("输入流关闭失败!");
                                }
                        }
                        System.out.println("复制成功!");
                }

        }
        

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 今日加分已经达到上限。请多多努力!.

查看全部评分

11 个回复

倒序浏览
首先,你的思路是没错的,先读取,后写入。
但是,你的代码采用的是一次性读取完毕,然后一次性写入完毕。
这样的话,在你写入时,就只能写一次,而不是循环的去写。
而恰恰你的代码用的就是循环,它必然停不下来!
while(len!=-1)
{
        bo.write(buf, 0,len);
        bo.flush();
}
把循环去掉就行了。

点评

FFF
赞一个!  发表于 2013-11-24 00:16
回复 使用道具 举报
应该是这样的吧
                        int len=0;
                        while((len=bi.read(buf))!=-1)
                        {
                                bo.write(buf, 0,len);
                                bo.flush();
                        }

回复 使用道具 举报
心的方向 发表于 2013-11-23 18:43
应该是这样的吧
                        int len=0;
                        while((len=bi.read(buf))!= ...

我那样写和你这写法有区别?:L不都一样!
回复 使用道具 举报
你操作的是纯文本文件为什么用 字节流···
你之所以不能跳出循环 是因为 你的Len 根本就是一个定值 长度就等于你文档里字符的长度
永远不可能为-1  不信你自己在循环里面用  sop(len)  输出看!
int len=read(buf);这句话就让你的len被赋值了
要清楚的理解read()和read(buf)的区别 都是读取 但是区别还是挺大的
好几天没来了  = = 连续签到也没了 赶快回答问题拿技术分···不然赶不上时间了 我勒个去

评分

参与人数 1黑马币 +6 收起 理由
FFF + 6 做任何事情都需要持之以恒!

查看全部评分

回复 使用道具 举报
潘际昌 发表于 2013-11-23 18:58
我那样写和你这写法有区别?不都一样!

你真把我说蒙了,while()只要不等于-1就循环执行,你那样写只执行了(读了bi.read(but))一次!你把我吓了一跳:lol
回复 使用道具 举报
虽然你在循环写但你只读了一次,这是有问题的,那样写不对吧
回复 使用道具 举报
FFF 金牌黑马 2013-11-24 00:40:35
8#
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
FFF 发表于 2013-11-24 00:40
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89 ...

为什么那个粘贴复制活动 我发了40多个群 截了24个图  咋没有5分技术分啊:lol

点评

FFF
这个活动是@黑马-滔哥发起的。你要找他要技术分哦、在指定的地方回帖。或者上群里问问!技术分跑不了的!  发表于 2013-11-24 09:38
回复 使用道具 举报
潘际昌 发表于 2013-11-24 01:08
为什么那个粘贴复制活动 我发了40多个群 截了24个图  咋没有5分技术分啊 ...

怎么找滔哥,权限不够,都发不了信息:L @黑马-滔哥
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马