Java语言的过滤数据流

news2025/1/16 5:38:46

过滤数据流

为了解决不同数据流之间速度、数据格式差异的问题,以便提高输入/输出操作的效率(特别是当需要大量的输入、输出操作的程序时),因此,Java贴心的提供了过滤流。 在已存在的数据流的基础上,过滤数据流与已经存在的数据流相联系,过滤流主要包括过滤输入数据流和过滤输出流。其中,过滤输入数据流从输入数据流中读取数据(以字节或者字符的形式存在),对这些数据进行加工处理,然后向内存提供特定格式的数据。而过滤输出数据流则是从内存中读取特定格式的数据,进行加工处理后,向输出数据流提供字节数据。

  • 过滤流主要包括缓冲区数据流、数据数据流、管道数据流、对象数据流等。

缓冲区数据流

缓冲区数据流相当于在数据流上增加一个缓冲区,字节(字符)数据到达缓冲数据流时,以块为单位进入缓冲数据流,其他数据流从该缓冲数据流中以字节(字符)的方读取数据 处理字节的缓冲区数据流包括缓冲区输入数据流(BufferedInputStream)和缓冲区输出数据流(BuffereredOutputStream)。另外,可以通过设定缓冲区的大小。控制输入输出操作的速度。

输入数据流(BufferedInputStream)

BufferedInputStream类的数据成员buf是一个位数组,默认2048字节。当读取数据来源时,BufferedInputStream会尽量将buf填满。当使用read()方法时,实际上是先读取buf中的数据,而不是直接对数据来源做读取。当buf中的数据不足时,BufferedInputStream才会再实现给定的InputStream对象的read()方法,即从指定的装置中提取数据。

// BufferedInputStream类中部分字段说明
protected byte[]:buf存储数据的内部缓冲区数组,该数组的默认大小为2048字节

protected int :计算比缓冲区中最后一个有效字节的索引大1的索引

protected int :marklink调用mark方法后,再后续调用reset方法失败前所允许的最大提前读取量

···

输出数据流(BufferedOutputStream)

BufferedOutputStream的数据成员buf是一个位数组,但它的默认字节数为512.当使用write()方法写入数据时,实际上会先将数据写至buf中,当buf满时才会实现给定的OutputStream对象的wrte()方法,将buf数据写至目的地,而不是每次都对目的地做写入的动作。

BufferedOutputStream类的构造方法

  1. BufferedOutputStream(OutputStream outputStream[,int s]):创建以恶搞缓冲输出流,以将指定缓冲大小的数据写入指定的输出流。如果没有指定缓冲区大小,则使用默认的缓冲区大小(1024字节)。
  2. void flush():刷新此缓冲的输出流(与OutputStream相比,BufferedOutputStream 类才有此方法)
  • 注:在关闭缓冲输出数据流时,应该强制输出流缓冲输出数据流中的数据。否则,还有数据在缓冲区内没有完全读出来。

  • 一般情况下。缓冲输入流缓冲区大小、缓冲输出流缓冲区大小以及指定数组的大小是相等的。每次从缓冲输入流中读出来的有效数据保存于数据b中,并记录有效数据的长度len,然后将数组中的前len个有效字节数据写入缓冲输出流中。

     

由于无法保证文件的实际长度是缓冲输入流缓冲区大小的整倍大小,最后一次写入缓冲区输入流时,不会把无效的数据写入缓冲数据流中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IntelliJ IDEA

特色功能 IDEA所提倡的是智能编码,是减少程序员的工作,IDEA的特色功能有以下22点[1] : ● 智能的选取 在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA就提供这种基于…

数据治理:数据标准的6大建设步骤及实施分享

“车同轨、书同文”,数字化时代,数据标准化是企业进行数字化转型的根基。数据标准与企业数据管理的每个域都相关,是数据治理工作的最基础内容。 元数据管理中,需要从业务属性、技术属性、管理属性三个方面定义数据标准&#xff1b…

第54篇-某网易易盾滑块请求data参数分析【2022-11-16】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、流程分析三、data参数1.d值2.p值3.ext值一、前言 在很久以前我们使用selenium+OpenCV模拟过一次易盾盾滑块…

学习大数据之后可以做什么?未来发展怎么样?

当下,有很多小伙伴看中了大数据开发的前景,从而选择了学习大数据的行列当中来,只能说,坚持你的选择没有错~ 当下来看,可以说大数据是一种宝贵的战略资源,其潜在价值和增长速度正在改变着人类的工作、生活和…

人人开源搭建后台管理系统 逆向工程生成CRUD代码

一、什么是人人开源 也就是说和若依类似,都是快速帮我们开发一些简单的逻辑代码的,可以帮我们自动生成代码。 二、具体操作 我们现在就以renren-fast作为后台管理系统框架,用renren-fast-vue作为前端系统框架进行开发项目 具体操作如下所示&a…

做好一个BI项目的关键是什么

做好一个BI项目的关键是什么?有人会说,那肯定是报表,报表是数据分析最直接的成果展示,好的报表能够帮助企业从各种纷杂的信息中及时地发现关键有效的信息,从而为决策提供支持。诚然,报表很重要,…

SPI通信协议

目录一、什么是SPI协议二、SPI物理层三、SPI协议层一、什么是SPI协议 SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议,是 Motorola 公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线&a…

【PTA-训练day7】L2-019 悄悄关注 + L1-027 出租

L2-019 悄悄关注 - 哈希表 PTA | 程序设计类实验辅助教学平台 1、java - 喜闻乐见超时 import java.util.*;public class Main {public static void main(String[] args){Scanner scnew Scanner(System.in);int nsc.nextInt();String[] namesc.nextLine().split(" "…

Centos7.6 源码编译部署percona mysql 5.7.39-42

Centos7.6 源码编译部署percona mysql 5.7.39-42 参考链接: mysql5.7.35源码编译安装部署CentOS7 编译安装 Percona Server 5.7percona Server for MySQL 5.7源码安装 一、部署环境准备 更换阿里云yum源 cd /etc/yum.repos.d/ mkdir bak && mv *.repo ba…

[附源码]java毕业设计江苏策腾智能科技公司人事管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

第1关:节点监听机制

ZooKeeper的监听机制 节点监听机制用以保证集群之间的一致性,以及服务器可以及时通知客户端节点状态的变化。 一个节点可以被监控,包括路径中存储的数据修改,子节点路径改变,当该节点发生修改,服务器可以通知设置监控…

AVS3帧间预测

帧间预测是去除时域冗余的重要工具,随着AVS标准发展,越来越多的帧间预测工具被加入标准,主要可以分为三类:预测编码类型、运动信息编码工具、CU级和子块级运动补偿。 预测编码类型 预测编码类型是指帧间预测的不同预测方式&#…

年产5000吨芒果醋工厂设计

摘要 - 1 - 1 绪论 - 6 - 1.1 概述 - 6 - 1.1.1 芒果醋的价值 - 6 - 1.1.2 芒果醋的市场贸易需求 - 6 - 1.1.3 国内芒果醋行业发展现状 - 7 - 1.2 本课题研究的意义 - 7 - 1.3 本课题的研究内容 - 8 - 1.4 设计原则 - 8 - 2 厂址选择 - 8 - 2.1 厂址选择 - 8 - 2.2 气温 - 9 - …

21、池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略)

池化技术和线程池的使用(三大方法,7大参数,4种拒绝策略) 池化技术:事先准备好一些资源,有需要用就拿,用完再还回来线程池的好处: *降低资源的消耗:线程的不停的创建销毁…

【LeetCode 力扣】2.两数相加 Java实现 模拟 递归

题目链接:2.两数相加 1 原题描述: 2 解题思路 初看此题,其实并不难理解,我们只需要简单对加法过程进行一个模拟,即可完成。那么我们应该怎么模拟呢?首先观察题目,链表是采用的 逆序 存储&…

[旭日X3派] 初识篇 - 01

简单介绍一下 旭日X3派: 地平线旭日️ X3 派是一款面向生态开发者的嵌入式 AI 开发板,接口兼容树莓派,具有 5 TOPS 端侧推理与 4 核 ARM A53 处理能力。 可同时多路 Camera Sensor 的输入并支持 H.264/H.265 编解码。 结合地平线的高性能 A…

什么是JUC

什么是JUC JUC指的是:Java里的三个包 java.util.concurrentjava.util.concurrent.atomic:原子性java.util.concurrent.locks:lock锁回顾线程和进程 进程 程序执行的一次过程,一个进程包含一个或多个线程。进程是资源分配的单位 …

【毕业设计】深度学习行人重识别系统 - person reid

文章目录0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图4 实现效果5 部分代码6 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问…

Linux NetCore下Pdf转图片 内存溢出

Linux NetCore下Pdf转图片 内存溢出Linux PDF转图片异常查看libgdiplus版本解决方案NetCore 3.1下面调用Pdf转图片的组件,在本地windows环境下转换正常,但是到容器里面就会转换失败,查看命令行日志可以看到如下错误。 Linux PDF转图片异常 …

web期末大作业:基于html+css+js制作 学校班级网页制作----校园运动会 4页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园班级网页设计 | 我的班级网页 | 我的学校 | 校园社团 | 校园运动会 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML:结构 …