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.rhkb.cn/news/234400.html

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

相关文章

批量剪辑方法:掌握视频剪辑技巧,按指定时长轻松分割视频

在视频制作和编辑过程中,经常要批量处理和剪辑大量的视频片段。学会批量剪辑方法可以提高工作效率,还可以使视频编辑更加准确和高效。下面来看下云炫AI智剪如何按指定时长轻松分割视频的批量剪辑方法。 分割后的视频文件效果,已分割分段的视…

业界首款PCIe 4.0/5.0多通道融合接口SSD技术解读

之前小编写过一篇文章劝大家不要碰PCIe 5.0 SSD,详细内容,可以再回顾下: 扩展阅读:当下最好不要入坑PCIe 5.0 SSD 如果想要进一步了解PCIe 6.0,欢迎点击阅读: 浅析PCIe 6.0功能更新与实现的挑战 PCIe 6.…

云卷云舒:【实战篇】云主机/虚拟机迁移

1. 简介 用户原有业务通过不同版本型号、不同操作系统的主机承载,形式上包括物理服务器、虚拟机、公有云主机等。随着业务不断扩张,需要将其业务云化转型,必须保证上云过程数据完整,业务平滑过度。 如果将所有业务系统都重新部署…

教你如何将本地虚拟机变成服务器,供其它电脑访问

场景:最近在做数据仓库的作业,需要团队协作,买不起阿里云服务器,所以想到能不能将我本地机上的虚拟机变成服务器,供其它同学的电脑访问。在虚拟机上安装hadoop和hive,然后同学机子上安装kettle进行连接。最…

Java 反射(一)

反射 1.反射的介绍 1.反射机制允话程序在执行期间借助于Refelction API取得任何类的信息(比如成员变量,构造器,成员方法等)并能操作对象的属性及方法,反射在设计模式和框架底层都会用到 2.加载完类之后,在…

可狱可囚的爬虫系列课程 08:新闻数据爬取实战

前言 本篇文章中我带大家针对前面所学 Requests 和 BeautifulSoup4 进行一个实操检验。 相信大家平时或多或少都有看新闻的习惯,那么我们今天所要爬取的网站便是新闻类型的:中国新闻网,我们先来使用爬虫爬取一些具有明显规则或规律的信息&am…

【Redis-04】Redis命令在客户端与服务器之间的执行流程

Redis本质上是一个数据结构服务器,支持键值对类型存储的内存管理系统,可以用作数据库、缓存和消息中间件,在我日常的开发中,基本上使用redis作为缓存中间件。 在Redis中有两个重要的角色,一个是服务器server&#xff0…

Adding Conditional Control to Text-to-Image Diffusion Models——【论文笔记】

本文发表于ICCV2023 论文地址:ICCV 2023 Open Access Repository (thecvf.com) 官方实现代码:lllyasviel/ControlNet: Let us control diffusion models! (github.com) Abstract 论文提出了一种神经网络架构ControlNet,可以将空间条件控制添加到大型…

性能分析与调优: Linux 监测工具的数据来源

目录 一、实验 1.环境 2. proc目录 3. sys目录 4.netlink 5.tracepoint 6.kprobes 7. uprobes 二、问题 1.systemd如何查看启动时间 2.CentOS与Ubuntu如何安装bpftrace 3.snap有哪些常用的命令 4.snap如何安装store 5.如何列出使用bpftrace的OpenJDK USDT探针 一…

显示管理磁盘分区 fdisk

显示管理磁盘分区 fdisk fdisk是用于检查一个磁盘上分区信息最通用的命令。 fdisk可以显示分区信息及一些细节信息,比如文件系统类型等。 设备的名称通常是/dev/sda、/dev/sdb 等。 对于以前的设备有可能还存在设备名为 /dev/hd* (IDE)的设备,这个设…

回顾2023编程之旅

一、前言 看在给了我一个博客专家的份上就继续写写博客,实事求是的讲如果是工作之余去总结csdn写写技术博客,还想混个专家什么的,真的是精力不够。因为里面的灌水的实在太多,比不过的,写这个玩意必须得淡泊名利才能悠然…

【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】

前一篇文章提到了普通创建索引会阻塞DML操作 PostgreSQL创建索引的锁分析和使用注意 而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能,降低创建索引在表上申请的锁的级别,ShareUpdateExclusiveLock级别的锁和RowExclusiveLock…

烟花燃放如何管控?智能分析网关V4烟火检测保障烟火安全

一、方案背景 随着元旦佳节的热潮退去,春节也即将来临,在众多传统的中国节日里,烟花与烧纸祭祀都是必不可少的,一方面表达了人们对节日的庆祝的期许,另一方面也是一种对故者思念的寄托。烟花爆竹的燃放不仅存在着巨大的…

Git将本地项目上传到Gitee仓库

1.右键点击文件,点击Git Bash Here,进入git窗口 2.初始化本地仓库 git init3.将本地仓库与远程仓库建立连接 git remote add origin 远程仓库地址远程仓库地址在gitee仓库复制即可 4.将远程仓库的文件拉到本地仓库中 git pull origin master5.将本地文件全部上传…

多模态推荐系统综述:二、特征交互 Fusion

二、Fusion 融合不同的多模态信息,与bridge相比,融合更关注项目之间的多模态内部关系。 它可以灵活地融合不同权重和焦点的多模态信息。 注意机制是应用最为广泛的特征融合。 2.1 粗粒度注意力。 一些模型应用注意力机制在粗粒度级别融合来自多种模式…

使用openssl 生成pfx格式证书时报错:unable to load certificates

问题现象包如下: 之前在centos上使用openssl部署证书服务器以及颁发证书的时候遇到的问题,在进行个人证书生成之后需要形成pfx格式证书,结果过程中报错了。网上类似资料比较少,做个记录。 生成pfx格式证书的命令: o…

c++实现支持动态扩容的栈(stack)

1.在栈容量满时自动扩容: 支持自动扩容栈实现: // // myStack.hpp // algo_demo // // Created by Hacker X on 2024/1/9. //#ifndef myStack_hpp #define myStack_hpp #include <stdio.h> #include <string.h> //栈实现 //1.入栈 //2.出栈 //3.空栈 //4.满栈 …

git安装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

Java后端开发——Mybatis实验

文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例&#xff1a;员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee…

忆阻器芯片STELLAR权重更新算法(清华大学吴华强课题组)

参考文献&#xff08;清华大学吴华强课题组&#xff09; Zhang, Wenbin, et al. “Edge learning using a fully integrated neuro-inspired memristor chip.” Science 381.6663 (2023): 1205-1211. STELLAR更新算法原理 在权值更新阶段&#xff0c;只需根据输入、输出和误差…