Java 中 IO 流的分类

Java 中的 I/O(输入/输出)流是处理输入和输出的机制。在 Java 中,I/O 流主要分为两大类:字节流和字符流。每个类别又分为输入流和输出流。这两大类流都是用于在程序和外部源(文件、网络、内存等)之间传输数据的。

字节流(Byte Streams)

字节流以字节为单位进行读写,适用于处理二进制数据。Java 中的字节流主要由两个基本类组成:InputStream 和 OutputStream。

InputStream(输入流)

InputStream 是所有字节输入流的抽象基类。它定义了一些基本的方法来读取字节数据。以下是一些常见的 InputStream 的实现类:

1、FileInputStream: 用于从文件读取数据。

InputStream input = new FileInputStream("example.txt");

2、ByteArrayInputStream: 从字节数组中读取数据。

byte[] data = {65, 66, 67, 68};
InputStream input = new ByteArrayInputStream(data);

3、BufferedInputStream: 提供缓冲功能,提高读取性能。

InputStream input = new BufferedInputStream(new FileInputStream("example.txt"));

OutputStream(输出流)

OutputStream 是所有字节输出流的抽象基类。它定义了一些基本的方法来写入字节数据。以下是一些常见的 OutputStream 的实现类:

1、FileOutputStream: 用于向文件写入数据。

OutputStream output = new FileOutputStream("example.txt");

2、ByteArrayOutputStream: 将数据写入字节数组。

ByteArrayOutputStream output = new ByteArrayOutputStream();

3、BufferedOutputStream: 提供缓冲功能,提高写入性能。

OutputStream output = new BufferedOutputStream(new FileOutputStream("example.txt"));

字符流(Character Streams)

字符流以字符为单位进行读写,适用于处理文本数据。Java 中的字符流主要由两个基本类组成:Reader 和 Writer。

Reader(读取器)

Reader 是所有字符输入流的抽象基类。它定义了一些基本的方法来读取字符数据。以下是一些常见的 Reader 的实现类:

1、FileReader: 用于从文件读取字符数据。

Reader reader = new FileReader("example.txt");

2、CharArrayReader: 从字符数组中读取数据。

char[] data = {'A', 'B', 'C', 'D'};
Reader reader = new CharArrayReader(data);

3、BufferedReader: 提供缓冲功能,提高读取性能。

Reader reader = new BufferedReader(new FileReader("example.txt"));

Writer(写入器)

Writer 是所有字符输出流的抽象基类。它定义了一些基本的方法来写入字符数据。以下是一些常见的 Writer 的实现类:

1、FileWriter: 用于向文件写入字符数据。

Writer writer = new FileWriter("example.txt");

2、CharArrayWriter: 将数据写入字符数组。

CharArrayWriter writer = new CharArrayWriter();

3、BufferedWriter: 提供缓冲功能,提高写入性能。

Writer writer = new BufferedWriter(new FileWriter("example.txt"));

转换流(转换器)

转换流是字符流和字节流之间的桥梁,提供了将字节流转换为字符流的能力。主要有 InputStreamReader 和 OutputStreamWriter。

InputStreamReader

InputStreamReader 是字节流到字符流的桥梁。它将字节流转换为字符流,可以指定字符集进行解码。

InputStream input = new FileInputStream("example.txt");
Reader reader = new InputStreamReader(input, "UTF-8");

OutputStreamWriter

OutputStreamWriter 是字符流到字节流的桥梁。它将字符流转换为字节流,可以指定字符集进行编码。

OutputStream output = new FileOutputStream("example.txt");
Writer writer = new OutputStreamWriter(output, "UTF-8");

对象流

对象流用于读写对象。主要有 ObjectInputStream 和 ObjectOutputStream。

ObjectInputStream

ObjectInputStream 用于从流中读取对象。

InputStream input = new FileInputStream("object.dat");
ObjectInputStream objectInput = new ObjectInputStream(input);

ObjectOutputStream

ObjectOutputStream 用于向流中写入对象。

OutputStream output = new FileOutputStream("object.dat");
ObjectOutputStream objectOutput = new ObjectOutputStream(output);

Java 中的 I/O 流提供了丰富的工具和类,以满足不同类型数据的读写需求。字节流适用于处理二进制数据,而字符流适用于处理文本数据。转换流用于在字符流和字节流之间进行转换,对象流则用于读写对象。选择适当的流取决于所处理数据的类型和需求。通过合理使用这些流,可以实现高效的输入和输出操作。

黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)

黑马程序员Java零基础视频教程_下部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)

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

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

相关文章

一、Mindspore 公开课 - Transformer

课程链接:Mindspore 技术公开课 Transformer 论文地址,建议看完课程以后简单看看论文 前言 Transformer是一种神经网络结构,由Vaswani等人在2017年的论文“Attention Is All You Need” 中提出,用于处理机器翻译、语言建模和文…

element表格数据,表头上(下)角标,html字符串渲染

1. 问题描述 在动态渲染的element表格中&#xff0c;表头和表中数据是一个含有html的字符串&#xff0c;需要渲染 2. 效果 3. 代码 const columns ref([{ text: 差值<sub>-3</sub> / 10<sup>-6</sup>℃<sup>-1</sup>, value: aallowEr…

Docker运行RabbitMQ并使用SpringAMQP操作

文章目录 一、RabbitMQ运行二、整合SpringAMQP1. 引入依赖 三、测试1. 消费者2. 生产者3. 运行 一、RabbitMQ运行 拉取docker镜像 docker pull rabbitmq:3-management基础运行命令 docker run \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_PASSrabbitmq \--name…

Velodyne 64E S3 硬件连接和 velodyne_driver ROS驱动安装

在当前的研究工作中&#xff0c;点云语义分割技术的应用显得尤为重要&#xff0c;而我选择了rangenet作为分割算法的核心。尽管课题组拥有一款80线激光雷达&#xff0c;但是在实际测试中&#xff0c;我们发现该算法模型在我们的数据集上的泛化表现并不理想。为了改善这一情况&a…

GRE隧道(初级VPN)配置步骤

一、拓朴图&#xff1a; 二、配置步骤&#xff1a; 1、配置IP 2、R1、R2 配置nat&#xff0c;代理内网地址通过G0/0/0口上外网 acl 2000rule permit source anyquit # int G0/0/0ip addr 100.1.1.1 24nat outbound 2000 # 3、R1、R2 配置默认出口路由G0/0/0&#xff0c;这一…

dockerfile文件详解

dockerfile Dockerfile是一种用于构建Docker镜像的文件&#xff0c;它包含一系列的指令&#xff0c;用于描述如何构建镜像。 dockerfile示例 # 指定基础镜像 FROM harbor.zhianoa.com/phoenix/ubuntu-python:3.7 # 镜像中创建/app目录&#xff0c;这一步可提前在基础镜像中创…

java+ssm+vue代码视频学习讲解

一、ssm 1.项目文件结构 2.数据库连接信息 3.其他配置信息 4.java代码文件目录介绍 5.entity层代码 6.controller&#xff0c;service&#xff0c;dao&#xff0c;entity层之间的关系 7.controller层代码 8.登陆拦截功能实现 AuthorizationInterceptor.java 9.文件上传功能 …

【笔记------coremark】单片机上的跑分库coremark移植

coremark的官方仓库&#xff1a;https://github.com/eembc/coremark 官方收录了很多单片机的跑分情况&#xff1a;https://www.eembc.org/coremark/scores.php 这个是我建立的一个仓库&#xff0c;用来收集自己用到的一些单片机的跑分情况&#xff1a;https://gitee.com/wild_c…

单容水箱液位定值控制实验

实验1 单容水箱液位定值控制实验 一、实验目的 1、通过实验熟悉单回路反馈控制系统的组成和工作原理。 2、分析分别用P、PI和PID调节时的过程图形曲线。 3、定性地研究P、PI和PID调节器的参数对系统性能的影响。 二、实验设备 A3000现场系统&#xff0c;任何一个控制系统…

C++标准库vector的基础用法总结

C标准库vector的基础用法总结 文章目录 C标准库vector的基础用法总结vector简介简单应用push操作pop操作删除末尾删除开头 参数传递 vector简介 vector是C标准模板库(STL)中的一个动态数组模板类&#xff0c;它可以随着元素的添加而自动增长。vector使用连续的内存空间来存储元…

蓝桥杯单片机省赛真题

文章目录 第八届蓝桥杯省赛真题及参考代码 链接&#xff1a;https://pan.baidu.com/s/1JQ68qvrU3cYLVaQbD1KSiA?pwd1111 第九届蓝桥杯省赛真题及参考代码 链接&#xff1a;https://pan.baidu.com/s/1LM_JALrsKsthnWxTtgE1Fw?pwd1111 第十届蓝桥杯省赛真题及参考代码 链接&…

[AutoSar]基础部分 RTE 08 runnable mapping

目录 关键词平台说明一、runnable mapping的必要性二、runnable mapping 通用规则三、Task type四、可以不用mapping的runnbale 关键词 嵌入式、C语言、autosar、runnable 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (…

手撕乘积(**Multiplication** **Product**): 穷举和图示(1)

手撕乘积(Multiplication & Product): 穷举和图示(1) 乘积 r ⋅ s ∑ i 1 s r r r ⋯ r ⏟ s times ∑ j 1 r s s s ⋯ s ⏟ r times r\cdot s\sum _{i1}^{s}r\underbrace {rr\cdots r} _{s{\text{ times}}}\sum _{j1}^{r}s\underbrace {ss\cdots s} _{r{\tex…

Spring Boot 进行 MockMvc 单元测试的实例

在Spring Boot应用程序中&#xff0c;使用MockMvc进行单元测试是一种有效的方式&#xff0c;可以验证控制器的行为和API的正确性。在这篇博客中&#xff0c;我们将介绍如何使用MockMvc对用户控制器&#xff08;UserController&#xff09;进行测试&#xff0c;该控制器涉及用户…

数据库单表查询

1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表&#xff0c;名为工作日期表…

线上问题整理

JVM 案例 案例一&#xff1a;服务器内存不足&#xff0c;影响Java应用 问题&#xff1a; 收到报警&#xff0c;某Java应用集群中一台服务器可用内存不足&#xff0c;超过报警阈值。 排查过程&#xff1a; 首先&#xff0c;通过Hickwall查看该应用各项指标&#xff0c;发现无论…

224.【2023年华为OD机试真题(C卷)】英文输入法(JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-英文输入法二.解题思路三.题解代码Python题解代…

Linux第22步_安装CH340驱动和串口终端软件MobaXterm

开发板输出信息通常是采用串口&#xff0c;而计算机通常是USB接口&#xff0c;为了让他们之间能够交换数据&#xff0c;我们通常采用USB转串口的转换器来实现。目前市场上的串口转换器大多是采用CH340芯片来实现的&#xff0c;因此我们需要在计算中安装一个CH340驱动程序&#…

[代码复现]BrainGNN: Interpretable Brain Graph Neural Network for fMRI Analysis

目录 1. 论文资料 2. 代码复现步骤及可能存在的问题 2.1. 环境配置 2.2. 代码运行 3. 为啥跑这个代码 1. 论文资料 &#xff08;1&#xff09;论文原文&#xff1a;BrainGNN&#xff1a;用于fMRI分析的可解释脑图神经网络 - ScienceDirect &#xff08;2&#xff09;论文…

Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)

前言 在项目研发中&#xff0c;相信大家都遇到过给用户增加头像照片的需求。 随着手机版本的不断更新&#xff0c;android 8、android 9、android 10、android 12、android 13、鸿蒙系统等等&#xff1b;遇到这个功能需求&#xff0c;大家肯定会想&#xff0c;“这还不好写&…