body, table{font-family: 微软雅黑}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}

字节流读取数据两种方式比较

█ 一次读取一个字节
█ 一次读取一个字节数组
       ☞每次可以读取多个数据,提高了操作效率
public class CopyDemo {
//第一步:将1.txt中的内容读入到内存            FileInputStream
//第二步:将内存中读入的数据读入到2.txt      FileOutputStream
//使用字节流来copy东西不会出现乱码,因为是把所有东西照搬过去,没有拿出来解析
public static void main(String[] args) throws IOException {
                FileInputStream fis = new FileInputStream("我的滑板鞋.mp4");    //任何文件格式都可以拷贝
                FileOutputStream fos = new FileOutputStream("kaobei.mp4");

//方法一:  效率低下,一次一个字节
/*             int b = 0;
                while((b = fis.read()) != -1){
                        fos.write(b);
                }*/
//方法二:  效率高,一次整个数组
                byte[] bytes = new byte[1024];
                int len = 0;
                while((len = fis.read(bytes)) != -1){
                        fos.write(bytes,0,len);
                }
                fis.close();
                fos.close();               
        }
}

字节缓冲流    ( 包装流,加入了一些缓冲区 8092 byte )


█ 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的情况,所以提供了字节缓冲区流
█ 字节缓冲输出流
        ☞BufferedOutputStream
            BufferedInputStream(InputStream in);           //缓冲区大小默认是8192
创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
            BufferedInputStream(InputStream in, int size); 
创建具有指定缓冲区大小的

█ 字节缓冲输入流
        ☞BufferedInputStream
           BufferedOutputStream(OutputStream out);        
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
           BufferedOutputStream(OutputStream out, int size);        
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
public class BufferTestMain {
        public static void main(String[] args) throws IOException {
                FileInputStream fis = new FileInputStream("我的滑板鞋.mp4");  
// 这样的fis不带缓冲区
                BufferedInputStream bfis = new BufferedInputStream(fis);
                FileOutputStream fos = new FileOutputStream("kaobei.mp4");
                BufferedOutputStream bfos = new BufferedOutputStream(fos);
// 方法一:
/*             int b = 0;
                while ((b = bfis.read()) != -1) { 
 //看上去是一个字节一个字节的读,其实系统实现是一次读 8192 个字节到缓冲区
                        bfos.write(b);
                }*/
// 方法二:更快,缓冲区自带一个8192缓冲区,自己还定义了一个1024的缓冲区       
                byte[] bytes = new byte[1024];
                int len = 0;
                while ((len = bfis.read(bytes)) != -1) {
                        bfos.write(bytes, 0, len);
                }
        }
}

Java——IO类,字节流缓冲区的更多相关文章

  1. java——io、字节流缓冲区拷贝文件、字节缓冲流

    使用try catch finally关闭文件流: 写入文件: import java.io.*; public class exp{ public static void main(String[] ...

  2. Java——IO类 字节流概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  3. Java IO: 其他字节流(上)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackInputStream,SequenceInputS ...

  4. Java IO 类一览表

    下表列出了大多数(非全部)按输/输出,基于字节或字符划分的 Java IO 类.

  5. [Java IO]02_字节流

    概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...

  6. Java IO之字节流

    Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...

  7. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  8. Java IO流-字节流

    2017-11-05 17:48:17 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大 ...

  9. Java—IO流 字节流

    IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络…),即是将数据源读入到程序的通信通 ...

  10. java IO流——字节流

    字节流主要操作byte类型数据,以byte数组为准,主要操作类有InputStream(字节输入流).OutputSteam(字节输出流)由于IputStream和OutputStream都是抽象类, ...

随机推荐

  1. poj 8469 特殊密码锁

    a:特殊密码锁 总时间限制: 1000ms 内存限制: 1024kB 描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头 ...

  2. 51NOD 1432 独木舟(贪心

    1432 独木舟   n个人,已知每个人体重.独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? ...

  3. POJ 1681 Painter's Problem(高斯消元+枚举自由变元)

    http://poj.org/problem?id=1681 题意:有一块只有黄白颜色的n*n的板子,每次刷一块格子时,上下左右都会改变颜色,求最少刷几次可以使得全部变成黄色. 思路: 这道题目也就是 ...

  4. LoadRunner测试流程

    使用LoadRunner 完成测试一般分为四个步骤: 2 Vvitrual User Generator 创建脚本 创建脚本,选择协议 录制脚本 编辑脚本 检查修改脚本是否有误 3 中央控制器(Con ...

  5. python 集合取最大最小值

    #Create a set seta = , , , , , ]) #Find maximum value print(max(seta)) #Find minimum value print(min ...

  6. ubuntu14.04 设置开机自启动脚本

    方法1.将脚本放入/etc/rc.local文件中. 方法2.添加一个ubuntu的开机启动服务 分为以下几个步骤: 1)新建一个脚本文件 new_services.sh #!/bin/bash # ...

  7. 《Blue Flke》团队项目需求改进与系统设计

    Github地址:https://github.com/13993013291/ruanjianguigexuqiu/tree/master 一.团队项目需求分析改进 1.<通讯录管理系统需求说 ...

  8. 2017"百度之星"程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)

    度度熊与邪恶大魔王 思路:由于防御和血量的范围很小,所以暴力枚举出对于每种防御造成的每种伤害所需的最小花费,最后只需在伤害大于等于血量的情况下再找到最小花费(这个只需要后缀最小值预处理一下就可以了) ...

  9. POJ - 2528 Mayor's posters(dfs+分治)

    POJ - 2528 Mayor's posters 思路:分治思想. 代码: #include<iostream> #include<cstdio> #include< ...

  10. 关于React性能优化

    这几天陆陆续续看了一些关于React性能优化的博客,大部分提到的都是React 15.3新加入的PureComponent ,通过使用这个类来减少React的重复渲染,从而提升页面的性能.使用过Rea ...