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. 项目中同一个dll的x86和x64同时引用

    <ItemGroup Condition=" '$(Platform)' == 'x86' "> <Reference Include="System. ...

  2. 委托的begininvoke

    http://blog.csdn.net/cml2030/article/details/2172854 http://blog.163.com/weizhiyong_111/blog/static/ ...

  3. Codeforces Round #528 div1

    完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧.. A - Connect Three 这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上.但是我做的还是 ...

  4. Weex 简介

    weex简介 Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 ...

  5. darknet-训练自己的yolov3模型

    目录 Yolo v3的使用方法 安装darknet 训练Pascal VOC格式的数据 修改cfg文件中的voc.data 修改VOC.names 下载预训练卷积层权重 修改cfg/yolov3-vo ...

  6. 深度优先搜索之小z的房子与验证码识别

    题目:小z的房子 高级语言程序设计实践题目:2.4 小z 的房子 ★实验任务 小z 通过自己的努力,终于发家致富.现在小明有一个大小为N*M 的 院子,雨后积起了水.四联通的积水被认为是连接在一起的. ...

  7. 解决复制到keil编辑器中汉字出现乱码情况

    https://blog.csdn.net/dxuehui/article/details/51123372 1.在菜单栏中选择'Edit'选项. 2.'Edit'选项中选择'Configuratio ...

  8. js分号的重要性

    js中语句末尾可以不加分号, 很多时候在做练习或写几个页面时,我都是不会加的.虽然知道加了会好一点.但就是觉得很敲一句就要多按一次分号键(;)来加分号,而不加也不怎么样,然后就不想加了. 也听说在对j ...

  9. hihocoder 九十八周 搜索一 24点

    题目1 : 搜索一·24点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副 ...

  10. hdu 5671 Matrix 标记。。。有点晕

    Matrix Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem ...