zoukankan      html  css  js  c++  java
  • Java-IO流-文件复制2

    package cn.bruce.IO;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class IOCopyDemo1 {
        // 文件复制方式的4种 比较
        // 1、单字节流复制
        // 2、字节数组复制
        // 3、字节流缓冲流单字节复制
        // 4、字节流缓冲区数组复制
        public static void main(String[] args) throws IOException {
            FileInputStream Zfin = new FileInputStream("E:\a.avi");
            FileInputStream Zfin1 = new FileInputStream("E:\a.avi");
            FileInputStream Zfin2 = new FileInputStream("E:\a.avi");
            FileInputStream Zfin3 = new FileInputStream("E:\a.avi");
            FileOutputStream Zfou = new FileOutputStream("E:\dzjl.avi");// 单字节
            FileOutputStream Zfou1 = new FileOutputStream("E:\ZJSZ.avi");// 字节数组
            FileOutputStream Zfou2 = new FileOutputStream("E:\dzjlHC.avi");// 单字节缓冲
            FileOutputStream Zfou3 = new FileOutputStream("E:\ZJSZHC.avi");// 字节数组缓冲
            long s = System.currentTimeMillis();
            fun1(Zfin, Zfou);// 一个一个字节的复制,太慢了
            long e = System.currentTimeMillis();
            System.out.println(e - s);
            long s1 = System.currentTimeMillis();
            fun2(Zfin1, Zfou1);// 字节数组形式的复制
            long e1 = System.currentTimeMillis();
            System.out.println(e1 - s1);
            long s2 = System.currentTimeMillis();
            fun2(Zfin2, Zfou2);// 单字节缓冲形式的复制
            long e2 = System.currentTimeMillis();
            System.out.println(e2 - s2);
            long s3 = System.currentTimeMillis();
            fun2(Zfin3, Zfou3);// 字节数组缓冲形式的复制
            long e3 = System.currentTimeMillis();
            System.out.println(e3 - s3);
        }
    
        // 1、单字节流复制
        public static void fun1(FileInputStream fin, FileOutputStream fou) {
            try
            {
                int len = 0;
                while ((len = fin.read()) != -1)
                {
                    fou.write(len);
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            } 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("输入流关闭失败");
                    }
                }
            }
        }
    
        // 2、字节数组复制
        public static void fun2(FileInputStream fin, FileOutputStream fou) {
            try
            {
                int len = 0;
                byte[] bs = new byte[1024];
                while ((len = fin.read(bs)) != -1)
                {
                    fou.write(bs, 0, len);
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            } 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("输入流关闭失败");
                    }
                }
            }
        }
    
        // 3、字节流缓冲流单字节复制
        public static void fun3(FileInputStream fin, FileOutputStream fou) throws IOException {
            BufferedInputStream bin = new BufferedInputStream(fin);
            BufferedOutputStream bou = new BufferedOutputStream(fou);
            try
            {
                int len = 0;
                while ((len = bin.read()) != -1)
                {
                    bou.write(len);
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            } 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("输入流关闭失败");
                    }
                }
            }
        }
    
        // 4、字节流缓冲区数组复制
        public static void fun4(FileInputStream fin, FileOutputStream fou) throws IOException {
            BufferedInputStream bin = new BufferedInputStream(fin);
            BufferedOutputStream bou = new BufferedOutputStream(fou);
            try
            {
                int len = 0;
                byte[] bs = new byte[1024];
                while ((len = bin.read(bs)) != -1)
                {
                    bou.write(bs, 0, len);
                }
            } catch (IOException e)
            {
                e.printStackTrace();
            } 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("输入流关闭失败");
                    }
                }
            }
        }
    }

  • 相关阅读:
    throw关键字
    Android WebView 调试方法
    webpack的Hot Module Replacement运行机制
    如何使用Node.js编写命令工具——以vue-cli为例
    webpack3新特性简介
    node.js如何制作命令行工具(一)
    webpack务虚扫盲
    web worker 扫盲篇
    httpd配置ResponseHeader
    针对iPhone的pt、Android的dp、HTML的css像素与dpr、设计尺寸和物理像素的浅分析
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13552310.html
Copyright © 2011-2022 走看看