package cn.bruce.IO; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class IOCopyDemo { public static void main(String[] args) throws IOException { FileInputStream Zfin = null;// 输入流 FileOutputStream Zfou = null;// 输出流 FileInputStream Zfin1 = null;// 输入流 FileOutputStream Zfou1 = null;// 输出流 Zfin = new FileInputStream("E:\A\aa.zip");// 绑定数据源66,076,638 字节63.0 MB Zfou = new FileOutputStream("E:\A\abcc.zip");// 绑定数据目的 Zfin1 = new FileInputStream("E:\A\aa.zip");// 绑定数据源66,076,638 字节63.0 MB Zfou1 = new FileOutputStream("E:\A\abccdd.zip");// 绑定数据目的 long s = System.currentTimeMillis(); fun(Zfin, Zfou);// 一个一个字节的复制,太慢了 long e = System.currentTimeMillis(); System.out.println(e - s); long s1 = System.currentTimeMillis(); fun1(Zfin1, Zfou1);// 数组形式的复制 long e1 = System.currentTimeMillis(); System.out.println(e1 - s1); } public static void fun(FileInputStream fin, FileOutputStream fou) { try { int len = 0; // System.out.println(fin.read()); while ((len = fin.read()) != -1) { // System.out.println((char) len); fou.write((char) len); } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("文件复制失败"); } finally { try { if (fou != null) { fou.close();// 关输出流 } } catch (IOException e2) { e2.printStackTrace(); throw new RuntimeException("输出流关闭失败"); } finally { try { if (fin != null) { fin.close();// 关输入流 } } catch (IOException e2) { e2.printStackTrace(); throw new RuntimeException("输入流关闭失败"); } } } } public static void fun1(FileInputStream fin, FileOutputStream fou) { try { byte[] bs = new byte[1024]; int len = 0; // System.out.println(fin.read()); while ((len = fin.read(bs)) != -1) { // System.out.println(new String(bs, 0, len)); fou.write(bs, 0, len); } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("文件复制失败"); } finally { try { if (fou != null) { fou.close();// 关输出流 } } catch (IOException e2) { e2.printStackTrace(); throw new RuntimeException("输出流关闭失败"); } finally { try { if (fin != null) { fin.close();// 关输入流 } } catch (IOException e2) { e2.printStackTrace(); throw new RuntimeException("输入流关闭失败"); } } } } }