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

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

相关文章

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题