黑马程序员技术交流社区
标题:
复制文本哪种方法更好
[打印本页]
作者:
花自凋零
时间:
2014-7-3 11:18
标题:
复制文本哪种方法更好
请问一下复制文本以下两种方法,方法一的代码简单,方法二运用了流的缓冲区,哪种方法更好?
方法一
import java.io.*;
class One
{
public static void main(String[] args)
{
FileWriter fw = null;
FileReader fr = null;
try
{
fw = new FileWriter("000.txt");
fr = new FileReader("Demo.java");
char[] buf = new char[1024];
int len = 0;
while ((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if (fw!=null)
fw.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
try
{
if (fr!=null)
fr.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
}
}
}
方法二
import java.io.*;
class Two
{
public static void main(String[] args)
{
BufferedWriter bufw = null;
BufferedReader bufr = null;
try
{
bufw = new BufferedWriter(new FileWriter("000.txt"));
bufr = new BufferedReader(new FileReader("Demo.java"));
String line = null;
while ((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if (bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
try
{
if (bufr!=null)
bufr.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
}
}
}
作者:
木华
时间:
2014-7-3 12:03
缓冲区可以调高效率。
作者:
HF_Opticalix
时间:
2014-7-3 12:09
哥们 用运行时间自己鉴定下啊
将复制文本方法封装成copy方法,再用下面代码调用
long start = System.currentTimeMillis();
copy();
long end = System.currentTimeMillis();
System.out.println(end-start+"ms");
复制代码
哪个快哪个就好
作者:
跃动
时间:
2014-7-3 17:16
个人觉得用缓冲区的方法好:)
作者:
毅心缘
时间:
2014-7-3 18:19
复制文本文件一般用的都是字符流。加入缓冲区技术,可以提高效率。
复制媒体文件的话,就要用字节流。否者就算复制出来,也打不开。
如果你想知道那个效率高的话,可以进行测试。
long start = System.currentTimeMillis();
copy();
long end = System.currentTimeMillis();
System.out.println(end-start+"ms");
复制代码
如果对文本有指定的编码表,就用转换流。或者会乱码。
作者:
Whero
时间:
2014-7-3 18:35
必须是有缓冲区的呀!
作者:
普哥
时间:
2014-7-3 19:41
第二种方法较好,因为第一种方法虽然用到了数组,但是每次毕竟传递的数据是1024个字符,并没有缓冲区那么大,这意味着如果文件较大,第一种方式需要传递很多次才能完成,而第二种方式用到的是缓冲区,一次可以传递完。这是我个人理解
作者:
肥洋洋
时间:
2014-7-3 21:48
缓冲区里面定义的也是数组,没什么区别的,缓冲区默认的数组是8192
作者:
wisely
时间:
2014-7-4 18:30
看你复制的文件大小,试过几次,时间的差距可以忽略不计。
作者:
自闭宅男
时间:
2014-7-4 20:02
缓冲区提高了数据传递效率
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2