黑马程序员技术交流社区

标题: 关于IO流复制文件的四种方法(黑马考试) [打印本页]

作者: 狂飙的yellow.co    时间: 2013-5-31 19:26
标题: 关于IO流复制文件的四种方法(黑马考试)
本帖最后由 狂飙的yellow.co 于 2013-6-1 19:30 编辑

我对于IO流复制文件,总结了四种方法
1.第一种复制方法,使用自定义的缓冲区
  1. public static void copyfile_1() throws IOException{//抛出异常
  2.                 //其中file的 \\是转义字符
  3.                 FileInputStream in = new FileInputStream("E:\\yellowcong.txt");//输入流
  4.                 FileOutputStream out = new FileOutputStream("E:\\heima.txt");//输出流
  5.                
  6.                 //自定义缓冲区
  7.                 byte [] buf = new byte[1024];
  8.                
  9.                 int len = 0;//用于判断是否写入完成的标记
  10.                 //多次的重复读写数据
  11.                 while((len = in.read(buf))!= -1){//读取数据,写入缓冲区
  12.                         out.write(buf, 0, len); // 写出数据
  13.                 }
  14.                
  15.                 //关闭资源
  16.                 out.close();
  17.                 in.close();
  18.         }
复制代码
第二种方法 使用java提供的缓冲区,这种方法的效率高一点
  1. public static void copyfile_2() throws IOException {
  2.                 // TODO Auto-generated method stub
  3.                 //读取数据的缓冲区
  4.                 BufferedInputStream in = new BufferedInputStream(new FileInputStream("E:\\yellowcong.txt"));
  5.                
  6.                 //写数据的缓冲区
  7.                 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("E:\\heima.txt"));
  8.                
  9.                 int ch = 0;//其中这个ch 不是用来标记的,而是来写的
  10.                 while((ch = in.read())!= -1){
  11.                         out.write(ch);
  12.                 }
  13.                
  14.                
  15.                 //关闭资源
  16.                 in.close();
  17.                 out.close();
  18.         }
复制代码
第三种方法:使用 aviable() 获取数据的大小,然后定义和复制的文件一样大的缓冲区
  1. public static void copyfile_3() throws IOException{//抛出异常
  2.                 //其中file的 \\是转义字符
  3.                 FileInputStream in = new FileInputStream("E:\\yellowcong.txt");//输入流
  4.                 FileOutputStream out = new FileOutputStream("E:\\heima.txt");//输出流
  5.                
  6.                 //自定义缓冲区
  7.                 byte [] buf = new byte[in.available()];
  8.                
  9.                 in.read(buf);
  10.                 out.write(buf);
  11.                 //关闭资源
  12.                 out.close();
  13.                 in.close();
  14.         }
复制代码
第四中方法    不用缓冲区的方法
  1. public static void copyfile_4() throws IOException{//抛出异常
  2.                 //其中file的 \\是转义字符
  3.                 FileInputStream in = new FileInputStream("E:\\yellowcong.txt");//输入流
  4.                 FileOutputStream out = new FileOutputStream("E:\\heima.txt");//输出流
  5.                
  6.                 int ch = 0;//用于读写, 读一个写一个,速度是很慢
  7.                 //多次的重复读写数据
  8.                 while((ch = in.read())!= -1){//读取数据,写入缓冲区
  9.                         out.write(ch); // 写出数据
  10.                 }
  11.                
  12.                 //关闭资源
  13.                 out.close();
  14.                 in.close();
  15.         }
复制代码

作者: 狂飙的yellow.co    时间: 2013-5-31 20:06
心都碎了,居然没有一个人来看一下。。。。。。。。
作者: 狂飙的yellow.co    时间: 2013-5-31 20:07
我看还是的顶一下啊

作者: 爱在转角    时间: 2013-5-31 20:10
童鞋,这个比较的全面
作者: 爱在转角    时间: 2013-5-31 20:11
狂飙的yellow.co 发表于 2013-5-31 20:07
我看还是的顶一下啊

童鞋,我看的顶你一下,不然你会崩溃的
作者: 我是黑马的    时间: 2013-5-31 20:14
我看行,这个真还是可以的
作者: 小羽天空    时间: 2013-5-31 20:16
辛苦了,顶一个
作者: 穆爱明    时间: 2013-7-8 20:49
学习一下,感谢分享!




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