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

2024-06-11 05:32

本文主要是介绍字节流读取数据两种方式比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

█ 一次读取一个字节

█ 一次读取一个字节数组

       ☞每次可以读取多个数据,提高了操作效率

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

                }

        }

}

这篇关于字节流读取数据两种方式比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1050316

相关文章

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

ShardingSphere之读写分离方式

《ShardingSphere之读写分离方式》:本文主要介绍ShardingSphere之读写分离方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录ShardingSphere-读写分离读写分离mysql主从集群创建 user 表主节点执行见表语句项目代码读写分

golang float和科学计数法转字符串的实现方式

《golangfloat和科学计数法转字符串的实现方式》:本文主要介绍golangfloat和科学计数法转字符串的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望... 目录golang float和科学计数法转字符串需要对float转字符串做处理总结golang float

linux lvm快照的正确mount挂载实现方式

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux lvm快照的正确mount挂载1. 检查快照是否正确创建www.chinasem.cn2.