zoukankan      html  css  js  c++  java
  • Java 利用缓冲字节流来实现视频、音频、图片的复制粘贴

    InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。

    OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。

    Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。

    Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

    package IOStream;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class BufferedStreamDemo {
    /**
     * 利用缓冲字节流来实现视频、音频、图片的复制粘贴
     */
        private static final String FilePath1 = "D:/图片文件包/夫人.jpg";// 要复制的文件路径
        private static final String FilePath2 = "E:/夫人.jpg"; // 文件目标路径
        
        /**
         * 1.使用缓存流拷贝文件
         * 2.记录拷贝过程用时
         */
        public static long CopyFileByBufferedStream(){
            File file1 = new File(FilePath1); // 创建要复制的文件对象
            if(!file1.exists()){ // 判断文件路径是否存在
                System.out.println("文件不存在!");
                return 0;
            }
            long starTime = System.currentTimeMillis(); // 记录复制文件所需时间
            
            InputStream inStream = null; // 创建字节输入流
            BufferedInputStream bInStream = null; // 创建缓冲输入字节流
            OutputStream outStream = null; // 创建字节输出流
            BufferedOutputStream bOutStream = null; // 创建缓冲字节输出流
            
            try {
                inStream = new FileInputStream(FilePath1); // 创建文件输入流,指向路径可以是:FilePath1,也可以是file1
                bInStream = new BufferedInputStream(inStream); // 用缓冲输入流装饰文件输入流
                outStream = new FileOutputStream(FilePath2); // 创建文件输出流,指向目标路径
                bOutStream = new BufferedOutputStream(outStream); // 用缓冲输出流来包装文件输出流
                
                int i = 0;
                while((i = bInStream.read()) != -1){
                    bOutStream.write(i);    // 对接流,输出文件
                }
                
                System.out.println("文件拷贝完成!");
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                try {
                    bOutStream.close();
                    bInStream.close();
                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
            long endTime = System.currentTimeMillis();
            return endTime - starTime;
        }
        
        public static void main(String[] args) {
            
            long time = CopyFileByBufferedStream();
            System.out.println("拷贝用时:" + time + "ms");
        }
    }
  • 相关阅读:
    CPP STL学习笔记
    CPP 设计模式学习
    blackarch 安装指南
    通过 Http 请求获取 GitHub 文件内容
    实践
    升级
    部署-MySql 之Linux篇
    数据库
    RxJs
    Vue
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9593885.html
Copyright © 2011-2022 走看看