zoukankan      html  css  js  c++  java
  • 2(1)-字节缓冲流

    package com.io;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.junit.Test;
    /**
     * 
     * @author Administrator
     *1、流的分类
     *(1)按照数据流向的不同,分为输入流和输出流
     *(2)按照处理数据单位的不同,分为字节流和字符流
     *(3)按照角色的不同,分为节点流(直接作用于文件,所有带File的InputStream OutputStream)、处理流(作用于节点流上面,提高效率)
     *2、IO体系
     *抽象基类                    节点流(即文件流)            缓总流(处理流的一种)
     *InputStream   FileInputStream         BufferedInputStream
     *OutputStream  FileOutputStream         BufferedOutputStream(flush)
     *Reader        FileReader                BufferedReader(readLine方法,一次读一行)
     *Writer        FileWriter                BufferedWriter(flush)
     *3、所有的处理流都作用于上面四种节点流,才能进行对文件操作
     */
    public class 缓冲字节流 {
        
        
        @Test
        public void compareBuffered(){
            
            long begin = System.currentTimeMillis();
            copyFileBuffered();
            long end = System.currentTimeMillis();
            System.out.println("加了缓冲流的复制时间:" + (end-begin));
            
            begin = System.currentTimeMillis();
            copyFileNoteBuffered();
            end = System.currentTimeMillis();
            System.out.println("没有缓冲流的复制时间:" + (end-begin));
        }
        
        /**
         * 加了缓冲流的文件复制
         */
        @Test
        public void copyFileBuffered(){
            //3、创建处理流(缓冲流)
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
            try {
                //1、创建文件对象
                File inFile = new File("v1.mp4");
                File outFile = new File("v2.mp4");
                //2、创建对应的节点流
                FileInputStream fis = null;
                FileOutputStream fos = null;
             
                //4、实例化节点流和处理流
                fis = new FileInputStream(inFile);
                fos = new FileOutputStream(outFile);
                bis = new BufferedInputStream(fis);
                bos = new BufferedOutputStream(fos);
                //5、定义字节数组
                byte[] b = new byte[1024];
                int len;
                //6、开始读写文件
                while((len = bis.read(b)) != -1){
                    bos.write(b, 0, len);
                    bos.flush();//刷新一下,重要
                }
            }  catch (IOException e) {
                e.printStackTrace();
            }finally{
                //在关闭最外层的处理流的时候会自动关闭里面的节点流,所以节点流不需要显示的关闭
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        
        /**
         * 没有缓冲流的文件复制
         */
        @Test
        public void copyFileNoteBuffered(){
            //2、创建对应的节点流
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                //1、创建文件对象
                File inFile = new File("v1.mp4");
                File outFile = new File("v3.mp4");
                fis = null;
                fos = null;
     
                //4、实例化节点流和处理流
                fis = new FileInputStream(inFile);
                fos = new FileOutputStream(outFile);
                
                byte[] b = new byte[1024];
                int len;
                //6、开始读写文件
                while((len = fis.read(b)) != -1){
                    fos.write(b, 0, len);
                }
            }  catch (IOException e) {
                e.printStackTrace();
            }finally{
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    PowerDesigner将PDM导出生成WORD文档
    哨兵机制
    redis 主从数据同步
    redis RDB
    redis AOF机制
    redis数据结构
    dependencyManagement 和 dependencies的区别
    同源策略 跨域资源共享
    高可用 可扩展 多层反向代理架构演进
    String 杂记
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5026118.html
Copyright © 2011-2022 走看看