JAVA系列 IO流 知识结构整理 建立合理的知识框架逻辑 输入输出流 理顺你的思维架构Fileoutput inputStream FileWriter FIleReader结构整理

Java IO 类继承结构图汇总 什么是IO流Java的IO流是实现输入/输出的基础,它可以方便的实现数据的输入/输出,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为 阅读详情

最近听见一首歌,个人创作时听见觉得挺好听的 先分享给大家https://music.163.com/#/song?id=41666363 それがあなたの幸せとしても (カバー)

切入正题 今天给大家介绍IO流,我只会介绍最基础的东西,因为我们都是按照考试的要求来复习的,太多的东西这里也讲不完,后续有新的东西我还会在这里追加我的更新即可。废话不多说直接切入正题。

File类

首先要给大家介绍的就是所有输入输出流的地基,file类,为什么说它是地基呢,因为就我个人而言的理解,file类是连接你的IDEA编程软件和你的桌面操作系统的一个link链接,通过它,你才能通过用你的编程软件 去操控你windows系统里的各种文件和其他东西,所以首先我们需要通过一个类,来创建这种联系。这种联系 很显然 就是我们的file类。

我们一般怎么使用呢,首先在使用前我要说明一点我开始初学的时候很容易搞错的一点。

一般情况在类的使用说明里面我们经常能看见这样的代码

public boolean canRead();
public boolean canWrite();
int read();
int read(byte b[]);

我一开始都没反应过来这个和类有什么关系,想了想发现,这些代码的意思是,你创建一个A类,这个类就自带这些方法。比如

//创建A类 A类包含上述方法。
A number1=new A();
boolean judge=A.canRead()//返回boolean类型
boolean judge1=A.canWrite();//boolean类型
int numbertest1=A.read();//返回int类型
byte arr[]=new byte[12];
int numbertest2=A.read(arr);//return int类型

我想各位看完上面这一串代码 就懂我想表达的意思了吧

好了 现在我们回过头来讲File类。如何创建File类呢

File f=new File("xxxxxxxxxxx")

xxxxxxxx就是路径 说起路径 我又想到了很多要说的东西。(为什么我要花那么多时间来说File类,因为File类是一切的地基,后面的类反而我不会多说什么。因为我有我自己的讲解风格,我是一个喜欢注重基础的人)

路径这个问题我实验过很多次,什么绝对路径,相对路径。我推荐大家写绝对路径,因为写相对路径的时候 我遇到过几个问题,现在给大家一一介绍这些问题

首先左边是我的项目结构,然后我使用相对路径去创建一个txt文件

创建成功了,但默认创建在了src文件夹外边

但是几天前在我没有升级IDEA的版本的时候,我想创建在src里面就用了如下所示的代码,虽然现在好像是创建成功了,但我之前可能因为版本问题,会提示操作错误,这样使用相对路径出现了问题。

但现在因为版本更新,好像是没有这个问题了,所以也无伤大雅,但是我还是推荐大家使用绝对路径来创建文件。

如图所示 这样就可以轻松的找到一个文件的绝对路径,方便我们编写程序,所以能用绝对路径是几乎不会出错的,不建议大家使用相对路径

文件字节输入流 输出流 //文件字符输入流 输出流//缓冲流 //FileInputStream FileOutputStream FileReader FileWriter BufferWriter BufferReader

这些东西我为什么要弄在一起呢??

因为我打算把他们揉在一起讲,因为很多就是包含关系,不应该是线性关系

而应该是类似树状一样的结构关系。

然后呢 后续我都会用英文来表示,因为我觉得中文反而显得很绕口,不如直接用编程字母来代表 更加直接美观。

首先 (当然也有BufferedInputStream和BufferedOutputStream,但是书上没有 考试也不考 各位了解一下即可 然后下面的BufferedReader Writer我打错字了 打成BufferReader Writer 先提醒一下)

以上两个图是我脑子里面的架构图

意思就是说 我对IO流的基础 就建立在这两张图上。这两个树状结构 彼此是平行关系

意思是同时存在两棵树 两棵树互不干扰 如果要详细点说明整个逻辑的话 我就再用这一张图来总结

PS:以上图片都是Viso所做(刚好最近IT检索课在教学 正好就用上了)

所以简单来说

File类是地基,然后我们可以给File类加技能点,比如现在有紫色技能点和红色技能点,加红色技能点就说明你在往FileInputStream和FileOutputStream方向成长(也就是字节流方向)

所以你看我们创建FileInputStream和FileOutputStream的时候是什么创建的?

\\这是第一种方法 在我眼里这是一种省略的写法
FileInputStream in=new FileInputStream("src\\letter.txt")//原谅我用了相对路径省时间

\\真正完全体的写法如下 完全体写法才能真正体现我所画的结构图
File file=new File("src\\letter.txt")
FileInputStream in1=new FileInputStream(file);

同学们 你们明白我要表达什么了吗 第一种是省略写法 省略写法能够省略很多步骤 但是体现不出来我想要表达的最重要的思想

第二种写法就能写出我想要表达的内容,由于File箭头指向了FileInputStream 能够形象地说明FileInputStream就是File类的铠甲,File穿在身上,才能发挥铠甲FileInputStream的用处,这样是不是很形象了? 所以第一种写法是不能够好好表达结构的 但是当我们熟悉了后 直接用第一种写法就好 可以省略编写代码的时间和量

File file=new File("src\\letter.txt")
FileInputStream in1=new FileInputStream(file);

好了 说完第一张图 我们来看第二张图

File类指向了FileReader FileWriter

(我们先不管FileReader Writer类有什么用 和刚才的字节流有什么区别)

那就说明FileReader类 和FileWriter类是File类的第二种铠甲,同样也必须是先有File类,才有铠甲类,就像必须先有骑士,然后铠甲才有用,这样才能发挥FileWriter和Reader的功能,其次我们看见FileReader和Writer指向了BufferReader和BufferWriter这样的缓冲流(你先不用知道缓冲流是什么)

那就说明BufferReader类和BufferWriter类需要套在FileReader和FileWriter上面,FileReader Writer又必须套在File类上面,就跟套娃一样。

简单点说 File是人

FileWriter(Reader)是铠甲

BufferReader(Writer)是铠甲上面的披风

一层层套娃下来 后面一个物体 必须依附前一个物体

import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        File f=new File("src\\letter.txt");
        FileReader fileReader=new FileReader(f);
        FileWriter fileWriter=new FileWriter(f);
        BufferedReader bufferedReader=new BufferedReader(fileReader);
        BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
        //一层层套娃
    }
}

人有自己的专属技能(也就是file类的各种方法)

铠甲也有自己的专属技能(FileWriter Reader的各种类方法)

披风也有自己的专属技能(Buffer的各种类方法)

但是有个奇妙的地方就是 披风也能使用铠甲的技能

    import java.util.*;
    import java.io.*;
    public class Main {
        public static void main(String[] args) throws IOException {
            File f=new File("src\\letter.txt");
            FileReader fileReader=new FileReader(f);
            FileWriter fileWriter=new FileWriter(f);
            BufferedReader bufferedReader=new BufferedReader(fileReader);
            BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
            
            
            fileWriter.write("shit");//铠甲专属技能
            bufferedWriter.write("shit");//披风使用了铠甲的专属技能
            //但是铠甲使用不了披风的专属技能 只能向下兼容 不能向上兼容
            bufferedWriter.newLine();//披风专用技能
             
        }
    }

以上就是全部内容了

你肯定很好奇 我为什么不详细讲讲 各种详细的用法 方法?

以及后面的随机流 数组流等等

首先网上有很多详细的介绍 但我发现无论多么详细 都没有书上(Java实用教程第六版)写得好

我们很多同学我觉得犯了一个很典型的错误,宁愿来优快云看解说和解析 都不愿意去看看教材,完全忘记了高中时期的学习方法,要是你没有手机电脑难道就不能学习了吗?

一定要回归教材 多看纸质书 不要天天盯着手机看优快云上面碎片化的解说 因为这样你的知识是零散的,不是系统的, 最怕就是这样的知识架构 感觉自己学了很多 会了很多 一考就散掉 因为你的架构和结构不牢固 不是系统学习过的样子 这也是很多培训班 和我们科班的区别 但是可悲的是 现在的大学生学习方法 还不如外面的培训班 有些人四年读下来 不仅和培训班一样没有基础 甚至还没培训班出来的人员能干活 简直两边不讨好 非常典型的现状。

当然 我之后会把详细的网络解析链接附上 但我还是强烈建议同学们回归教材。

Java IO流(超详细!)

对象流ObjectInputStream的使用

【Java基础-3】吃透Java IO:字节流、字符流、缓冲流

第二 后面的随机流

和数组流不是考试的要求范围 所以我就不一一介绍了 我先帮各位把逻辑梳理清楚 然后后面的修行就靠各位自己了

最后 我想说的是什么呢

自我反思

过去一年左右 大学2022年 我觉得是我人生事业20年来最低谷的一段时期,各种摆烂 颓废的想法都有,而且疲于调整自己 我觉得很羞愧

好歹过去一年 认识了很多优秀的同学和朋友,以及姐妹 无形中助力 我想和他们一样优秀 慢慢开始有调整自己的想法

然后在2022年末期,上了IT文件检索课(陶然老师的),老师看起来很佛系,但讲的道理我都是认真听了的

颇有感悟 我在课程PPT上写了这样的结束语。

我想说的很简单,我很感谢有这样一位的老师,也许很多话他也是无意说的,但我都听进去了

我也get到了很多 他要表达的意思, 瞬间点醒了颓废一年的我 再加上重新开放的country政策

希望终于回来了。

但是我们要知道 很多时候是不会有人来点醒你的 能碰到是运气好 那万一运气不好呢,难道我们就要一直沉沦下去 难道我们就要一直期待有一个人来点醒你吗?

低谷的尽头 你能期望拯救自己的人应该只能是自己

很多时候这种时刻看起来很普通 但很多人很多时候就是遇不见 就是不会调整自己 就是不知道反思

就像过去一年的我一样

我一直觉得自己不够优秀 事实也如此 不够努力 事实更是如此

疏于调整 疏于反思自己 太过浮躁 事实也是这样

2023年新的一年

希望我们一起进步 丢弃霉运 大步向前 突破自己

Java IO层次体系结构 在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了       Java I/O主要包括如下几个层次,包含三个部分:    1.流式部分――IO的主体部分;    2.非流式... 阅读详情

相关推荐

从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)

本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。

weixin_29197835的博客 446

5.0、Java_IO流 - IO流类的基本体系结构

Java 为我们提供了多种多样的 IO 流,我们可以根据不同的功能以及性能要求挑选合适的 IO 流;下图为 Java 中 IO 流类的基本体系结构(这里只列举出一些常用的类,详情可以参考 JDK API 文档)

m0_52433668的博客 436

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 218

java中的io系统总结(zz)

java 中的 io 系统总结 Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamRead...

weixin_30633949的博客 562

flink新版本无bat启动文件的解决办法

flink

6 4932

勇闯dify v1.0.0之设置模型供应商。解决:Reached maximum retries (3) for URL https://marketplace.dify.ai/

朋友们,大家好,今天带大家来勇闯dify v1.0.0。为什么叫勇闯呢?我就这么说吧,本来我昨天就想带大家勇闯v1.0.0的。但是dify的marketplace访问不了。公司的网和手机热点都试了,就是访问不了。我们连个模型都没有,还勇闯个球啊,对吧,就搁置了。今天,我赶紧看看这个marketplace好了没。一看,可以了。赶紧写下这篇博客,帮助同志们走出困境。

xiezhipu的博客 4616

java io 结构_java 的IO类库的基本架构

java IO 操作的类在java.io 包中,大概可以分为以下几组:基于字节操作的接口:InputStream 和 OutputStream基于字符操作的接口:Writer 和 Reader基于磁盘操作的接口:File 相关基于网络操作的接口:Socket 相关前两个是数据格式区分,后两个是传输方式区分。IO 只是人机交互的手段,除了完成交互功能,我们关注的就是如何提高他的运行效率了,而数据格式...

weixin_34730055的博客 257

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

JAVA之IO类

一、流的概念 在Java中,可以提供字节序列的对象,或者可以接收字节序列的对象,都可以抽象成流。能向程序中提供字节序列,即可以从其中读入字节序列,这样的对象显然就是输入流。相反的,能够接收程序送来的字节序列,也就是可以向其中写入字节序列,就是输出流。 InputStream和OutputStream类分别是字节输入/输出流继承体系的基类。 字节流都是以字节为单位读写的,而Java中字符采

郭大侠写leetcode 473

030、自动白平衡AWB实战:灰度世界、完美反射与色温估计的工程实现与局限

本文深入探讨了自动白平衡(AWB)算法在工程实践中的实现与局限性。作者结合实际项目经验,分析了灰度世界算法、完美反射算法和色温估计三种主流方法的优缺点和适用场景,并分享了调试过程中的关键技巧和常见陷阱。文章指出,纯色背景、多光源环境等特殊场景容易导致算法失效,需要通过混合策略和场景检测来优化。作者强调AWB调试需要大量实际场景测试,建议保留手动调节功能,并针对不同硬件配置进行参数标定。最后提出,AWB优化是一个持续迭代的过程,需要工程化的测试方法和数据处理能力。

zzfmlxs的博客 281

2024年数字IC秋招-睿思芯科-IC验证工程师-笔试题

公司介绍:初创公司,做risc-v,公司位于深圳笔试题型:基础题(10个) + 选做题(5个)笔试平台:showmebug(电脑监控)笔试时间:1h个人感受:每年rsxk的题目好像是一样的,起码今年和去年的题目是相同的,但是做完笔试题目就没有消息了。

qq_42135020的博客 1582

【Java.IO】I/O 流的类体系结构

。。。

王晓斌的专栏 3722

运维系列【仅供参考】: Windos10和Windos11 配置intel网卡vlan的方法

Windos10和Windos11 配置intel网卡vlan的方法

weixin_54626591的博客 475

Java中I/O体系结构总结

在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了       Java I/O主要包括如下几个层次,包含三个部分:   &n...

weixin_43887184的博客 511

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java io体系_Java之IO类的体系结构

Java中IO操作主要是指使用Java进行输入,输出操作,Java中所有的操作类都存放在Java.io包中,在使用时需要导入此包。在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了...

weixin_33841242的博客 408

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文件中InputStream&OutputStream常用的方法

InputStream&OutputStream 方法 描述 int read() 从输入流中读取下一个字节数据(0-255),已达最后没有可读数据时返回-1 read(byte[]b) 从输入流中读取b.length的字节到字节数组b中,并返回实际读取的字节数 int read(byte[]b,int off,int len) 读取字节保存在字节数组...

Algorithm_Soul 498

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 223

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 149

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 328

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 115

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 194

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 104

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 397

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 626

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 376
上一篇: CET6 历年真题原词复现 核心词汇 做题技巧 听力拿分技巧汇总(这篇文章是英语四六级考试最后的版本,谢谢大家一路陪伴)
下一篇: JAVA系列 多线程 Thread类 耦合 线程调度 如何创建线程 弱耦合 完全解耦 思维结构整理
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨骅麟(Morgan Young)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值