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

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

相关文章

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

Java文件与Base64之间的转化方式

《Java文件与Base64之间的转化方式》这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者... 目录Java文件与Base64之间的转化1、文件转Base64工具类2、Base64转文件工具类3、

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

SpringMVC前后端传值的几种实现方式

《SpringMVC前后端传值的几种实现方式》本文主要介绍了SpringMVC前后端传值的方式实现,包括使用HttpServletRequest、HttpSession、Model和ModelAndV... 目录一、从Controller层到JSP界面1、使用HttpServletRequest的方式2、使

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.