Java中的IO流

在这里插入图片描述

在这里插入图片描述

在Java中,I/O(输入/输出)流用于处理与输入和输出相关的操作。Java的I/O流按照数据处理的不同方式分为两大类:字节流和字符流。每个类别又分为输入流和输出流。以下是Java中常用的I/O流及其继承关系:

字节流(Byte Streams)

输入流(Input Streams)
  1. InputStream(抽象类):所有字节输入流的父类

    • FileInputStream:用于从文件读取字节数据
    • ByteArrayInputStream:从字节数组读取数据
    • FilterInputStream(抽象类):所有过滤输入流的父类
      • BufferedInputStream:提供缓冲功能,减少读取磁盘的次数
      • DataInputStream:读取基本数据类型的输入流
      • ObjectInputStream:读取对象的输入流
  2. Reader(抽象类,用于字符流的基类):所有字符输入流的父类

    • FileReader:从文件读取字符数据
    • CharArrayReader:从字符数组读取数据
    • StringReader:从字符串读取数据
    • FilterReader(抽象类):所有过滤字符输入流的父类
      • BufferedReader:提供缓冲功能,减少读取磁盘的次数
      • LineNumberReader:读取行号的输入流
      • PushbackReader:可以推回字符的输入流
输出流(Output Streams)
  1. OutputStream(抽象类):所有字节输出流的父类

    • FileOutputStream:用于向文件写入字节数据
    • ByteArrayOutputStream:向字节数组写入数据
    • FilterOutputStream(抽象类):所有过滤输出流的父类
      • BufferedOutputStream:提供缓冲功能,减少写入磁盘的次数
      • DataOutputStream:写入基本数据类型的输出流
      • ObjectOutputStream:写入对象的输出流
  2. Writer(抽象类,用于字符流的基类):所有字符输出流的父类

    • FileWriter:向文件写入字符数据
    • CharArrayWriter:向字符数组写入数据
    • StringWriter:向字符串写入数据
    • FilterWriter(抽象类):所有过滤字符输出流的父类
      • BufferedWriter:提供缓冲功能,减少写入磁盘的次数
      • PrintWriter:提供打印功能,可以方便地打印各种数据类型的文本表示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

初始化和使用

对于输入流和输出流,通常需要使用try-with-resources语句,以确保资源被正确关闭。以下是一些简单的初始化和使用示例:

字节流的使用
// 字节输入流
try (InputStream inputStream = new FileInputStream("example.txt")) {int data;while ((data = inputStream.read()) != -1) {// 处理字节数据}
} catch (IOException e) {e.printStackTrace();
}// 字节输出流
try (OutputStream outputStream = new FileOutputStream("output.txt")) {byte[] data = "Hello, World!".getBytes();outputStream.write(data);
} catch (IOException e) {e.printStackTrace();
}
字符流的使用
// 字符输入流
try (Reader reader = new FileReader("example.txt")) {int data;while ((data = reader.read()) != -1) {// 处理字符数据}
} catch (IOException e) {e.printStackTrace();
}// 字符输出流
try (Writer writer = new FileWriter("output.txt")) {String data = "Hello, World!";writer.write(data);
} catch (IOException e) {e.printStackTrace();
}
如果想要更详细的介绍,请跳转到本人的另一个博客:黑马程序员Java零基础视频教程_下部(P52-P134)🔗https://blog.csdn.net/weixin_46225503/article/details/130302411

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

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

相关文章

BERT Intro

继续NLP的学习,看完理论之后再看看实践,然后就可以上手去kaggle做那个入门的project了orz。 参考: 1810.04805.pdf (arxiv.org) BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili (强推!)2023李宏毅讲解大模型鼻祖BERT,一小时…

竞赛保研 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

C++学习-List学习

#include <Qlist> #include <list> #include <functional> //仿函数要的头文件 #include <string>模板函数 template <class _Ty>void PrintfList(QList<_Ty> data) {qDebug() << "模板函数" << "\t";fo…

探索芊芊简历:一个革新的简历创建工具

在寻找理想工作的道路上&#xff0c;一份出色的简历是打开机遇之门的关键。今天&#xff0c;我想向大家介绍一款名为“芊芊简历”的免费简历编辑器&#xff0c;它以其独特的功能和先进的技术&#xff0c;为求职者提供了一个简单而高效的简历制作解决方案。 丰富多样的模板&…

医疗器械软件生命周期过程

IEC 62304是一项用于医疗器械软件的国际标准&#xff0c;名为《医疗设备软件的生命周期过程》&#xff08;Medical device software - Software life cycle processes&#xff09;。该标准关注医疗设备软件的开发、验证、维护等生命周期过程&#xff0c;以确保软件的质量、安全…

虚拟局域网的基本概念与基本原理

虚拟局域网&#xff08;Virtual Local Area Network&#xff0c;VLAN&#xff09;是一种在物理局域网内部划分逻辑上独立的虚拟网络的方法。它通过在网络交换机上配置&#xff0c;将不同的设备分组到不同的虚拟网络中&#xff0c;实现了逻辑上分隔的网络通信。本文将介绍虚拟局…

北京大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;教育漏洞报告平台(EDUSRC) 兑换价格&#xff1a;30金币 获取条件&#xff1a;北京大学任意中危或以上级别漏洞

【排序】快速排序

思想 快速排序是一种基于分治策略的排序算法&#xff0c;其核心思想通过选取一个基准元素&#xff0c;将数组分成两个子数组&#xff1a;一个包含小于基准元素的值&#xff0c;另一个包含大于基准元素的值。然后递归地对这两个子数组进行排序&#xff0c;最终将它们合并起来&a…

UltraScale 和 UltraScale+ 生成已加密文件和已经过身份验证的文件

注释 &#xff1a;如需了解更多信息&#xff0c;请参阅《使用加密和身份验证确保 UltraScale/UltraScale FPGA 比特流的安全》 (XAPP1267)。 要生成加密比特流&#xff0c;请在 Vivado IDE 中打开已实现的设计。在主工具栏中&#xff0c;依次选择“Flow” → “Bitstream Setti…

解决在eclipse2021中,用mysql-connector-java-8.0.18.jar不兼容,导致无法访问数据库问题

1.环境场景 组件版本mysql5.7.44mysql-connector-java80.18 2. 问题描述 报mysql-connector-java 驱动连不上mysql数据库。 3. 可能的原因分析 查看数据库连接句柄是否对 如果数据库连接句柄中没有 useSSLfalse 的话可能会导致这样的问题。 就像下面这样&#xff1a; jdb…

c# 类的方法链接例子

在这个示例中&#xff0c;我们创建了一个名为 Calculator 的类&#xff0c;它具有一些简单的数学运算方法&#xff0c;如 Add()、Subtract()、Multiply() 和 Divide()。每个方法都会对内部的 result 成员变量进行相应的操作&#xff0c;并返回 Calculator 对象本身&#xff0c;…

FRPS配置服务端(腾讯云)、客户端(PC电脑Windows、树莓派Debian)并设置虚拟域名

1.服务端&#xff08;腾讯云&#xff09;&#xff1a;frps.ini [common] bind_port 7000 vhost_http_port8080 vhost_https_port44344 dashboard_port 7500 privilege_token your_password subdomain_host example.com use_encryption true encryption_method tls dashb…

搭建zuul网关

1. 路由知识 有关网关的很多知识我们都在04.gateway讲解了&#xff0c;有关网关的详细知识可以到上节详细了解。本节我们主要来讲解下另一个网关zuul。本节结合之前的章节网关搭建的项目案例上实现zuul的搭建&#xff0c;侧重于实战。 2. Zuul现状 zuul官方文档 zuul截止clo…

【ZooKeeper高手实战】ZooKeeper 工业级的场景(配置中心、日志系统、数据同步系统)

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

深入理解 Hadoop (五)YARN核心工作机制浅析

概述 YARN 的核心设计理念是 服务化&#xff08;Service&#xff09; 和 事件驱动&#xff08;Event EventHandler&#xff09;。服务化 和 事件驱动 软件设计思想的引入&#xff0c;使得 YARN 具有低耦合、高内聚的特点&#xff0c;各个模块只需完成各自功能&#xff0c;而模…

熟悉HDFS常用操作

1. 利用Hadoop提供的Shell命令完成下列任务 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件。 #检查文件是否存在./bin/hdfs dfs -test -e text.txt echo $? #结果是1 代表已存在 #根据结果判断出文件已存…

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional&#xff1a;全局事务注解&#xff0c;添加了以后可实现分布式事务的回滚和提交&#xff0c;用法与spring…

VMware虚拟机安装Ubuntu

准备:Ubuntu的镜像文件,VMware,手. 1.新建虚拟机&#xff0c;选择自定义&#xff0c;下一步。 2.硬件兼容性&#xff0c;选择Workstation 16.x&#xff0c;下一步。 3.选择安装程序光盘映像文件&#xff0c;路径为映像文件所在文件夹&#xff0c;下一步。 4. 创建用户和设置密…

hive 函数使用详解

一、前言 在任何一种编程语言中,函数可以说是必不可少的,像mysql、oracle中,提供了很多内置函数,或者通过自定义函数的方式进行定制化使用,而hive作为一门数据分析软件,随着版本的不断更新迭代,也陆续出现了很多函数,以满足日常数据查询与分析的各种场景。 二、hive 函…

GEE中导入研究区shape

找到Assets&#xff0c;新建NEW 等待上传完成 从Assets列表中找到导入文件&#xff0c;复制ID