黑马程序员技术交流社区

标题: 流问题 [打印本页]

作者: 胡雷    时间: 2011-9-3 00:59
标题: 流问题
想了半天不知道怎么用语言表达,直接上个大概的代码吧。对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流里面有什么不同及运行后的一个运行过程?但估计意思表达的很多人看不明白。
谢谢各位了!
作者: 匿名    时间: 2011-9-3 01:29
呵呵,先看看这篇帖子中的回答吧
[url]http://bbs.itheima.com/thread-1343-1-1.html[/url]
不知道这个是不是你想要的答案~
作者: 匿名    时间: 2011-9-3 02:11
标题: 回复 沙发 的帖子
谢谢。不过我还没学到那块呢。
作者: 匿名    时间: 2011-9-3 08:23
[color=DarkOrange]第二种方法为什么会比第一种方法的速度快呢? [/color]
第二种方法中的原理更高级:先将从1.txt读出的字符存入数组buf,然后直接输出数组。而第一种方法:从1.txt中读一个字符,输出一个字符致11.txt,周而复始。
[color=DarkOrange]这两个方法中fw.write将字符存入fw流里面有什么不同及运行后的一个运行过程?[/color]
方法一中的fw.write():一次存一个字符;
方法二中的fw.write():也是一次存一个字符,但存入的对象是数组buf.
作者: 匿名    时间: 2011-9-3 08:24
一个是读一个写一个,另一个一个接一个的读,读满一定数量,一下子写
作者: 匿名    时间: 2011-9-3 18:34
你想问为什么第二种方法比第一种快,那是因为,读取区和写入区在硬盘不同的地方,你从读取区读一个字节然后跑到写入区写一个字节,硬盘的磁头要来回跑,当然比你读一堆的字节然后再跑到写入区写一堆的字节慢了,假设有十个字节的数据,第一种方法来回跑了十次,第二种方法跑一次就搞定,而且第一种方法对硬盘的伤害比较大。
作者: 匿名    时间: 2011-9-4 15:55
就和拿东西呢,一个是一个一个的那,另一个是那个筐子一拿拿一筐,
我是这么理解的
作者: 匿名    时间: 2011-9-6 18:34
呵呵  8#回答得太好了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2