Java中的流类型详解

news2024/9/21 18:50:57

Java中的流类型详解

  • 1、按照流的方向分类
    • 1.1 输入流(InputStream)
    • 1.2 输出流(OutputStream)
  • 2、按照实现功能分类
    • 2.1 节点流(Node Stream 或 Basic Stream)
    • 2.2 处理流(Wrapper Stream 或 Processing Stream)
  • 3、按照处理数据的单位分类
    • 3.1 字节流(Byte Stream)
    • 3.2 字符流(Character Stream)


💖The Begin💖点点关注,收藏不迷路💖

在Java中,流(Stream)是用于处理数据的输入和输出的重要概念。Java的流可以按照不同的标准进行分类,下面我们将详细解释这些流类型。

1、按照流的方向分类

1.1 输入流(InputStream)

输入流主要用于从数据源(如文件、网络等)读取数据。你可以把它想象成一个“吸管”,通过这个“吸管”你可以从数据源中“吸”取数据。

1.2 输出流(OutputStream)

输出流则用于将数据写入到目标位置(如文件、控制台等)。你可以把输出流想象成一个“水管”,通过这个“水管”你可以将数据“输送”到目标位置。

2、按照实现功能分类

2.1 节点流(Node Stream 或 Basic Stream)

节点流也被称为基本流或低级流,它可以直接从或向一个特定的地方(节点)读写数据。例如,FileReaderFileWriter就是节点流,它们分别用于从文件和向文件读写数据。

2.2 处理流(Wrapper Stream 或 Processing Stream)

处理流也被称为包装流或高级流,它是对一个已存在的流的连接和封装。处理流可以为数据读写提供额外的功能,如缓冲、加密、解密、转换等。处理流总是需要带一个其他的流对象作为参数进行构造。例如,BufferedReader就是一个处理流,它封装了一个Reader对象,并为读取数据提供了缓冲功能。

3、按照处理数据的单位分类

3.1 字节流(Byte Stream)

字节流以字节为单位处理数据,它通常用于处理二进制数据。在Java中,字节流主要由InputStreamOutputStream两个抽象类及其子类组成。

3.2 字符流(Character Stream)

字符流以字符为单位处理数据,它通常用于处理文本数据。在Java中,字符流主要由ReaderWriter两个抽象类及其子类组成。字符流在处理文本数据时更加高效和方便。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

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

相关文章

Java语言程序设计——篇四(2)

类和对象 方法设计定义和使用方法访问方法和修改方法方法的调用方法参数的传递✨方法重载✨构造方法(构造器)🚩this关键字this关键字主要用于以下两种情况: 编程练习静态变量和静态方法静态变量静态方法🌈解释:main方法的访问权限…

玩客云刷入海纳思系统

玩客云(晶晨S805)刷机 | 海纳思系统 (ecoo.top) https://www.ecoo.top/update/soft_init/amlproject/USB_Burning_Tool_v2.1.3.exe https://node4.histb.com:9088/update/system/s805/hinas_s805_eMMC.burn.img.zip

【排序算法】—— 归并排序

归并排序时间复杂度O(NlongN),空间复杂度O(N),是一种稳定的排序,其次可以用来做外排序算法,即对磁盘(文件)上的数据进行排序。 目录 一、有序数组排序 二、排序思路 三、递归实现 四、非递归实现 一、有序数组排序 要理解归…

[算法] 优选算法(五):二分查找(上)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Linux虚拟机扩展磁盘空间

文章目录 在VM上进行扩展新的磁盘空间进入虚拟机将扩展的磁盘空间分配给对应的分区 VM 下的Linux虚拟机提示磁盘空间不足,需要对其进行磁盘扩容,主要有以下两步: 在VM上进行扩展新的磁盘空间 先关闭虚拟机在VM的虚拟机设置处进行硬盘扩展 …

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块,只能说每个人画都有自己的理由: 电源:从外部接入电源,5V接到中间,向上变成4V供给无线,向下变成3V供给下面的接口(也刻意放…

Java---SpringBoot详解二

勤奋勤劳铸梦成, 晨曦微露起长征。 汗水浇灌花似锦, 寒窗苦读岁月明。 千锤百炼心如铁, 万里征途志不倾。 持之以恒终有日, 功成名就笑谈中。 目录 一,统一响应结果 二,三层架构 三,分层解耦 四…

力扣第九题

回文数 提示: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 代码展示&#…

请你谈谈:AnnotatedBeanDefinitionReader 显式地注册一个Bean到Spring容器,以及注册并解析配置类

为了深入探讨Spring框架中的beanDefinition对象,我们不可避免地要提及BeanFactoryPostProcessor这一核心类,它作为Spring的bean工厂后置处理器发挥着关键作用。接下来,我们将详细讨论BeanFactoryPostProcessor的执行时机,这是一个…

顶顶通呼叫中心中间件-添加自定义变量到CDR方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-添加自定义变量到CDR方法(mod_cti基于FreeSWITCH) 1、自定义变量添加到cti.json 例:需要添加的变量为“bridge_uepoch" 2、添加进数据库 在数据库中找到表"cdr"在cdr表中也添加数据,数据名为新变量名&#xff1a…

基于Java的科大讯飞大模型API调用实现

写在前面:因为现在自己实习的公司新拓展的一个业务是结合AI的低代码平台,我负责后端的开发,之前一直都是直接使用gpt或者文心一言等ui界面来直接使用大模型,从来没有自己调接口过,所以本文记录一下自己第一次使用大模型…

P2p网络性能测度及监测系统模型

P2p网络性能测度及监测系统模型 网络IP性能参数 IP包传输时延时延变化误差率丢失率虚假率吞吐量可用性连接性测度单向延迟测度单向分组丢失测度往返延迟测度 OSI中的位置-> 网络层 用途 面相业务的网络分布式计算网络游戏IP软件电话流媒体分发多媒体通信 业务质量 通过…

从零开始做题:什么奇奇怪怪的东西

题目 解题 mrf拓展名,macro recorder打开,鼠标键盘的记录 然后解压flag.zip即可,发现有一个挂载的文件,直接打开后 显示所有的隐藏文件 一个一个打开 然后进行拼接运行吧估计。 首先打开txt文件直接久就给出了代码&#xff1…

maven项目容器化运行之2-maven中使用docker插件调用远程docker构建服务并在1Panel中运行

一.背景 公司主机管理小组的同事期望我们开发的maven项目能够在1Panel管理的docker容器部署。上一篇写了先开放1Panel中docker镜像构建能力maven项目容器化运行之1-基于1Panel软件将docker镜像构建能力分享给局域网-CSDN博客。这一篇就是演示maven工程的镜像构建、容器运行、运…

学习大数据DAY16 PLSQL基础语法5

目录 异常 自定义异常的格式 raise_application_error 处理异常 预定义异常 SQLcode和SQLerrm 非预定义异常 作业 触发器 触发器基本概念 DML触发器 DML触发器使用 instead of 触发器 管理触发器 作业2 函数、过程和包 函数 过程 参数 1. in 参数 2.out 参…

KALI使用MSF攻击安卓设备

这期是kali使用MSF进行安卓渗透的保姆级别教程,话不多说,直接开始。 准备材料: 1.装有kali的实体机或虚拟机(这里用实体机进行演示) 2.一台安卓10.0以下的手机 打开kali,先用ifconfig查看自己的kali IP地址…

MySQL第八次作业

一、备份与恢复作业: 创库,建表: CREATE DATABASE booksDB; use booksDB; CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL ); CREATE TABLE authors …

Git提交了敏感信息,通过BFG工具撤回或修改很久之前已经提交的内容

Git 提交了敏感信息怎么办? 这篇文章的由来,由于自己在提交代码的时候不小心把服务器的ip地址,还有数据库的密码给push到github上面去了。那么问题来了,我这个已经是一个月之前的提交的呢,现在还能改吗?别…

SIM900发送中文短信的处理过程

SIM900发送中文短信的处理过程 1、短信中心号码处理: 短信中心号码可以使用ATCSCA?获取。 在获取之前,最好将设置使用GSM字符: ATCSCS"GSM" OK ATCSCA? CSCA: "8613800755500",145 OK 这样一来,我就得…

Python酷库之旅-第三方库Pandas(023)

目录 一、用法精讲 58、pandas.isnull函数 58-1、语法 58-2、参数 58-3、功能 58-4、返回值 58-5、说明 58-6、用法 58-6-1、数据准备 58-6-2、代码示例 58-6-3、结果输出 59、pandas.notna函数 59-1、语法 59-2、参数 59-3、功能 59-4、返回值 59-5、说明 5…