IO(字节流的读写操作)

IO流的分类:
* 流向:
* 输入流 读取数据
* 输出流 写出数据
* 数据类型:
* 字节流
* 字节输入流 读取数据 InputStream
* 字节输出流 写出数据 OutputStream
* 字符流
* 字符输入流 读取数据 Reader
* 字符输出流 写出数据 Writer
*
* 注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。

/
* 字节输出流操作步骤:
* A:创建字节输出流对象
* B:调用write()方法
* C:释放资源
*
public void write(int b):写一个字节
* public void write(byte[] b):写一个字节数组
* public void write(byte[] b,int off,int len):写一个字节数组的一部分
*/

FileOutPutStream写出数据实现换行和数据追加写入

FileOutputStream—加入异常处理的字节输出流操作

FileOutputStream—-读取文件数据

IO(字节流复制文本文件案例)

计算机是如何识别两个字节拼接成中文的

字节流复制文本文件(案例2)

字节流复制图片案例

字节流复制视频

FileInputSteram读取数据一次一个字节数组

FileInputSteram读取数据一次一个字节数组(复制文本文件)

BufferedOutputStream—* 写数据:BufferedOutputStream

通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非常好的。
* 既然是这样的话,那么,java开始在设计的时候,它也考虑到了这个问题,就专门提供了带缓冲区的字节类。
这种类被称为:缓冲区类(高效类)
* 写数据:BufferedOutputStream
* 读数据:BufferedInputStream
*
构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了。
*
* 为什么不传递一个具体的文件或者文件路径,而是传递一个OutputStream对象呢?

  • 原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。

自写版

BufferedInputStream—-读数据:BufferedInputStream

自写版

字节流四种方式复制速度对比

Original: https://www.cnblogs.com/ztg-java-xuexi/p/16079831.html
Author: ztgzqn
Title: IO(字节流的读写操作)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571444/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一级缓存与二级缓存

    1.一级缓存 一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间…

    Java 2023年6月13日
    097
  • [前端][一本][6分] 项目部分的描述可以多加扩展

    关注【校招VIP】 公众号,回复【简历】 ,添加校招顾问微信,即可获取简历指导! 本份简历是一位21届一本前端同学的简历,简历评分6分。 一、学员简历 二、指导意见 简历版式没有问…

    Java 2023年6月5日
    086
  • SeataAT模式入门

    Seata架构 Seata将分布式事务理解为一个全局事务,它由若干个分支事务组成,一个分支事务就是一个满足ACID的本地事务。 Seata架构中有三个角色:TC (Transact…

    Java 2023年6月9日
    0214
  • 单例设计模式

    单例模式: 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。 具体的代码实现: 饿汉式: class Bank { //&#x…

    Java 2023年6月14日
    095
  • nginx重新整理——————http请求的11个阶段中的find_config[十三]

    前言 简单介绍一下find_config 与 preaccess 阶段。 正文 find_config 很大一部分工作是进行location的匹配。 来一张图看下location指…

    Java 2023年5月30日
    074
  • Spring:基于注解的MVC程序示例

    首先创建一个 controller类 import org.springframework.stereotype.Controller; import org.springfram…

    Java 2023年5月30日
    085
  • 基于MD5+RSA算法实现接口调用防扯皮级鉴权

    最近项目中需要对第三方开发接口调用,考虑了一下,准备采用MD5+RSA算对请求数据进行签名,来达到请求鉴权,过滤非法请求的目标。数字签名采用MD5+RSA算法实现。RSA私钥要严格…

    Java 2023年6月7日
    064
  • Dokcer运行Nacos容器自动退出问题

    Dokcer运行Nacos容器自动退出问题 参考博文 学生党,租的云服务器,2核2G。使用Docker运行Nacos容器的时候发现总是自动退出。Nacos日志里面没有明显的报错信息…

    Java 2023年6月8日
    075
  • 不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)

    不同标准下的C语言常量范围的默认类型的检测 一、 C90与C99标准下的不同常量范围的默认类型 *C90标准下对不同常量范围默认类型的检测实现及运行结果: C9 9 *标准下对不同…

    Java 2023年6月5日
    070
  • Java学习 (25) 对象篇(05)抽象类&接口

    抽象类 – 语法实例 注意点 具体讲解视频(狂神说Java) 接口 – 语法实例 具体讲解视频(狂神说Java) 抽象类 abstract修饰符可以用来修饰…

    Java 2023年6月8日
    076
  • Mariadb 10.4 root 用户无法使用无密码登录的原因

    Mariadb现在是网站建设中使用的主流数据库之一,当前它很多个版本:10.1、10.2、10.3、10.4。 其中10.1和10.2在程序中使用root用户登录连接数据库都没有什…

    Java 2023年6月7日
    096
  • nginx配置常用 ( 反向代理时传客户端IP )

    反向代理时传客户端IP csharp;gutter:true;location / { proxy_set_header X-Forwarded-For $remote_addr;…

    Java 2023年5月30日
    060
  • ||运算你真的了解吗?

    或运算介绍 或运算:只要有一个条件为true,即为true。 通过如上逻辑关系图,还有另外一层 隐含的意思: 如果A条件是true,B条件不执行! 如果A条件是false,B条件要…

    Java 2023年6月8日
    070
  • TCP协议分析工具TcpEngine V1.2.0使用教程

    概述 目前主流的网络数据分析工具主要有两类,一类是http协议分析工具,如fiddler,这类工具擅长对字符串类型协议分析;另一类是原始网络数据包的监听分析,如Wireshark,…

    Java 2023年6月5日
    084
  • 新建项目运行会报Gradle plugin requires Java 11 to run 问题

    在高版本的AS的gradle需要java11 ,但是环境使用的却是1.8 csharp;gutter:true; An exception occurred applying pl…

    Java 2023年5月29日
    075
  • 电脑常见快捷键

    一、键盘功能键: Tab键:切换菜单和空四个格子; Shift键:组合键;(可以与F1,F2,或者1,2,3等等组合打出不一样的符号) Ctrl键:控制键;(eg:ctrl+shi…

    Java 2023年6月15日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球