黑马程序员技术交流社区

标题: 总结文件复制4种基础方法 - - [打印本页]

作者: 122125241    时间: 2015-7-2 10:27
标题: 总结文件复制4种基础方法 - -
  1. package it.cast1;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;

  7. public class CopyFileDemo1 {

  8.         public static void main(String[] args) throws IOException {
  9.                 // 创建文件输入流和文件输出流
  10.                 FileInputStream stream = new FileInputStream("F:\\JAVA521\\Day018\\src\\it\\cast1\\陈百强-一生何求.mp3");
  11.                 FileOutputStream stream2 = new FileOutputStream("E:\\陈百强-一生何求.mp3");
  12.                 long start = System.currentTimeMillis();
  13.                 methed(stream, stream2);//耗时62秒
  14.                 methed1(stream, stream2);//0秒
  15.                 methed2(stream, stream2);//0秒
  16.                 methed3(stream, stream2);//0秒
  17.                 long end = System.currentTimeMillis();
  18.                 System.out.println("总耗时"+(end-start)/1000+"秒");
  19.         }
  20.         //高效字节流数字符数组读取
  21.         private static void methed3(FileInputStream stream, FileOutputStream stream2) throws IOException {
  22.                 //高效字节流对象创建
  23.                 BufferedInputStream bis=new BufferedInputStream(stream);
  24.                 BufferedOutputStream bos= new BufferedOutputStream(stream2);
  25.                 //新建数组放读取字节
  26.                 byte [] arr = new byte [1024];
  27.                 //读取文件放入字节数组
  28.                 int read = 0;
  29.                 while ((read=bis.read(arr))!=-1) {
  30.                         //把字节数组写入复制的文件中
  31.                         bos.write(arr, 0, read);
  32.                 }
  33.                 //关闭高效字节流
  34.                 bis.close();
  35.                 bos.close();
  36.         }
  37.         //字节数组读取复制文件
  38.         private static void methed2(FileInputStream stream, FileOutputStream stream2) throws IOException {
  39.                 // 新建数组
  40.                 int read = 0;
  41.                 byte [] arr = new byte [1024];
  42.                 //读取文件并把文件中每个字符存入数字
  43.                 while ((read=stream.read(arr))!=-1) {
  44.                         //把字节数组写入复制的文件中
  45.                         stream2.write(arr, 0, read);
  46.                 }
  47.                 //关闭数据流
  48.                 stream.close();
  49.                 stream2.close();
  50.         }
  51.         //高效字節流复制文件
  52.         private static void methed1(FileInputStream stream, FileOutputStream stream2) throws IOException {
  53.                 //创建高效字节输出流和输入流
  54.                 BufferedInputStream bis=new BufferedInputStream(stream);
  55.                 BufferedOutputStream bos= new BufferedOutputStream(stream2);
  56.                 //读取
  57.                 int read = 0;
  58.                 while ((read = bis.read())!=-1) {
  59.                         //写入复制
  60.                         bos.write(read);
  61.                 }
  62.                 //关闭字节流
  63.                 bis.close();
  64.                 bos.close();
  65.                
  66.         }
  67.         //字节流读取复制
  68.         public static void methed(FileInputStream stream, FileOutputStream stream2)
  69.                         throws IOException {
  70.                 // 读取文件
  71.                 int read = 0;
  72.                 while ((read = stream.read()) != -1) {
  73.                         // 写去文件
  74.                         stream2.write(read);
  75.                 }
  76.                 // 关闭数据流
  77.                 stream.close();
  78.                 stream2.close();
  79.         }

  80. }
复制代码

作者: 耀阳圣尊    时间: 2015-7-2 10:36
其实只要了解面向对象,按照面向对象的思想。从哪来、到哪去、调用读和写的方法、有变量或是数组接受读的数据、设置循环结束条件,关流就可以了。(当然了 ,我说的是最简单的复制)

但是楼主总结的确实不错!
作者: 122125241    时间: 2015-7-2 10:54
耀阳圣尊 发表于 2015-7-2 10:36
其实只要了解面向对象,按照面向对象的思想。从哪来、到哪去、调用读和写的方法、有变量或是数组接受读的数 ...

我只是一个攻占黑马高地的一个小士兵:'(只能总结,了解不深~~加分:'(




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