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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡雷 黑马帝   /  2011-9-3 00:59  /  1879 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想了半天不知道怎么用语言表达,直接上个大概的代码吧。对1.txt进行copy,copy后生成11.txt.
FileWriter fw = new FileWriter("11.txt");
FileReader fr = new FileReader("1.txt");
文件copy有两种方法:
1,    int ch = 0;      
        while((ch=fr.read()) != -1)
        {
            fw.write(ch);       
        }
        fr.close();
        fw.close();
2,     char[] buf = new char[1024];        
        int len = 0;
        while((len=fr.read(buf)) != -1)   
            {
                fw.write(buf,0,len);      
            }
        fr.close();
        fw.close();
第二种方法为什么会比第一种方法的速度快呢?
其实我想问的是,这两个方法中fw.write将字符存入fw流里面有什么不同及运行后的一个运行过程?但估计意思表达的很多人看不明白。
谢谢各位了!

评分

参与人数 1技术分 +1 收起 理由
王玉玺 + 1

查看全部评分

8 个回复

倒序浏览
黑马网友  发表于 2011-9-3 01:29:32
沙发
呵呵,先看看这篇帖子中的回答吧
[url]http://bbs.itheima.com/thread-1343-1-1.html[/url]
不知道这个是不是你想要的答案~
回复 使用道具 举报
黑马网友  发表于 2011-9-3 02:11:21
藤椅

回复 沙发 的帖子

谢谢。不过我还没学到那块呢。
回复 使用道具 举报
黑马网友  发表于 2011-9-3 08:23:21
板凳
[color=DarkOrange]第二种方法为什么会比第一种方法的速度快呢? [/color]
第二种方法中的原理更高级:先将从1.txt读出的字符存入数组buf,然后直接输出数组。而第一种方法:从1.txt中读一个字符,输出一个字符致11.txt,周而复始。
[color=DarkOrange]这两个方法中fw.write将字符存入fw流里面有什么不同及运行后的一个运行过程?[/color]
方法一中的fw.write():一次存一个字符;
方法二中的fw.write():也是一次存一个字符,但存入的对象是数组buf.

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-3 08:24:29
报纸
一个是读一个写一个,另一个一个接一个的读,读满一定数量,一下子写
回复 使用道具 举报
黑马网友  发表于 2011-9-3 18:34:14
地板
你想问为什么第二种方法比第一种快,那是因为,读取区和写入区在硬盘不同的地方,你从读取区读一个字节然后跑到写入区写一个字节,硬盘的磁头要来回跑,当然比你读一堆的字节然后再跑到写入区写一堆的字节慢了,假设有十个字节的数据,第一种方法来回跑了十次,第二种方法跑一次就搞定,而且第一种方法对硬盘的伤害比较大。
回复 使用道具 举报
黑马网友  发表于 2011-9-4 15:55:37
7#
就和拿东西呢,一个是一个一个的那,另一个是那个筐子一拿拿一筐,
我是这么理解的
回复 使用道具 举报
黑马网友  发表于 2011-9-6 18:34:02
8#
呵呵  8#回答得太好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马