吹静静

欢迎QQ交流:592590682

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");
    }
}

 

posted on 2018-09-05 19:01  吹静静  阅读(3632)  评论(0编辑  收藏  举报