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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小黑-张颖 黑马帝   /  2011-9-5 06:20  /  1874 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Copy
{
       
        public static void copy(String from, String to)
        {
                FileReader fr=null;
                FileWriter fw=null;
                try
                {
                        fr=new FileReader(from);
                        fw=new FileWriter(to);
                        char[] cbuf=new char[1024];
                        int length;
                        while((length=fr.read(cbuf))!=-1)
                        {
                                fw.write(cbuf,0,length);
                        }
                }catch(Exception e)
                {
                        e.printStackTrace();
                }
                finally{
                        try{fr.close();
                        fw.close();
                }catch(Exception e)
                {
                        e.printStackTrace();
                }
                }
        }
}

在本文加粗的部分,length=fr.read(cbuf)的意思是把fr中的内容读入到数组cbuf中,然后写入到输出流。但是这里把内容读到数组中是一次性读的还是怎么读的。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看看大家的回答!

查看全部评分

4 个回复

正序浏览
黑马网友  发表于 2011-9-5 13:10:13
报纸
是一个一个读 每次循环 都会读一个 然后read会自动移到下一个去 再循环到那的时候 又把下一个读过来 然后read又会去下下个准备读 就是这样 以前我也问过这问题 等读完最后一个的时候 read就会返回个 - 1了 所以循环也就停止了:lol
回复 使用道具 举报
黑马网友  发表于 2011-9-5 11:56:04
板凳
[color=DarkOrange]但是这里把内容读到数组中是一次性读的还是怎么读的。 [/color]
不是一次性读入,是一个一个依次读入到数组中的。当读到末尾时,返回-1。
回复 使用道具 举报
黑马网友  发表于 2011-9-5 10:10:41
藤椅
可以这样理解,你要读的数据是小水滴,cbuf数组是一个桶,这个桶多大就看你将这个数组设置多大,read(cbuf)就是往里面储水,等到cbuf这个桶的水满了再給write拿去用,wirte是有多少用多少,用到没就给read重新装。

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-5 06:41:33
沙发
看一下这个帖子,大概就明白了
[url]http://bbs.itheima.com/thread-1343-1-1.html[/url]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马