Java—IO学习:框架总览,高屋建瓴

java主流框架 阅读详情

转(http://blog.youkuaiyun.com/qq924862077/article/details/52687487)

在Java IO中我们会经常提到输入流和输出流,流是一种抽象的数据总称,本质是能够进行数据的传输。按照流的方向分为:输入流和输出流。按照流中处理数据的单位,可以将其区分为:字节流和字符流。在Java中,字节就是1个Byte,8位,而字符是占2个Byte,16位,字节是有符号类型,字符是无符号类型的。

一、以字节为单位的输入流的框架图:



从上图我们可以看出以字节为单位的输入流的公共父类是InputStream:
(1)InputStream是以字节为单位的输入流的超类,InputStream提供了接口从输入流中读取字节数据。
(2)ByteArrayInputStream是字节数组输入流,它的内部缓冲区是一个字节数组,本质是通过字节数组来是实现的。
(3)PipedInputStream是管道输入流,能够实现多线程间的管道通信。
(4)FilterInputStream是过滤输入流,它是DataInputStream和BufferedInputStream的超类。
(5)DataInputStream是数据输入流,用来装饰其他输入流,允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。
(6)BufferedInputStream是缓冲输入流,作用是为另一个输入流添加缓冲功能。
(7)FileInputStream是文件输入流,通常用于对文件进行读取操作。
(8)File是文件和目录路径名的抽象表示形式,File不仅仅表示文件,也可以表示目录,它的超类是Object。
(9)FileDescriptor是文件描述符,用来表示开放文件,开放套接字等。
(10)ObjectInputStream是对象输入流,和ObjectOutputStream一起来对基本数据或对象进行持久存储。

二、以字节为单位的输出流的框架图:


从中我们可以看出,以字节为单位的输出流的公共父类是OutputStream:
(1)OutputStream是以字节为单位的输出流的超类,提供了write()函数从输出流中读取字节数据。
(2)ByteArrayOutputStream是字节数组输出流,写入ByteArrayOutputStream的数据被写入到一个byte数组,缓冲区会随着数据的不断写入而自动增长,可使用toByteArray()和toString()获取数据。
(3)PipedOutputStream是管道输出流,和PipedInputStream一起使用,能实现多线程间的管道通信。
(4)FilterOutputStream是过滤输出流,是DataOutputStream,BufferedOutputStream和PrintStream的超类
(5)DataOutputStream是数据输出流,用来装饰其他的输出流,允许应用程序以与机器无关方式向底层写入基本Java数据类型。
(6)BufferedOutputStream是缓冲输出流,它的作用是为另一个输出流添加缓冲功能。
(7)PrintStream是打印输出流,用来装饰其他输出流,为其他输出流添加功能,方便的打印各种数据值
(8)FileOutputStream是文件输出流,通常用于向文件进行写入操作。
(9)ObjectOutputStream是对象输出流,它和ObjectInputStream一起对基本数据或者对象的持久存储。

三、以字符为单位的输入流的框架图:


从图我们可以看出,以字符为单位的输入流的公共类是Reader。
(1)Reader是以字符为单位的输入流的超类,它提供了read()接口来取字符数据。
(2)CharArrayReader 是字符数组输入流,用于读取字符数组,继承于Reader。操作的数据是以字符为单位。
(3)PipedReader 是字符类型的管道输入流,它和PipedWriter一起可以通过管道进行进程间的通讯,在使用管道通信时,必须将PipedWriter和PipedReader配套使用。
(4)FilterReader是字符类型的过滤输入流。
(5)BufferedReader是字符缓冲输入流,作用是为另一个输入流添加缓冲功能。
(6)InputStreamReader是字节转字符的输入流,它是字节流通向字符流的桥梁。
(7)FileReader是字符类型的文件输入流,通常用于对文件进行读取操作。

四、以字符为单位的输出流的框架图:



从图中可以看出,Writer是所有字符输出流的超类。

(1)Writer是以字符为单位的输出流的超类,它提供了writer()函数,进行对字符的写。
(2)CharArrayWriter是字符数组输出流,用于读取字符数组,继承于Writer,操作数据的单位是字符。
(3)PipedWriter是字符类型的管道输出流,它和PipedReader一起是可以通过管道进行线程间的通讯,在使用管道通信时,必须将PipedReader和PipedWriter配套使用。
(4)FilterWriter是字符类型的过滤输出流。
(5)BufferedWriter是字符缓冲输出流,作用是为另一个输出流添加缓冲功能。
(6)OutStreamWriter是字节转字符的输出流,是字节通向字符流的桥梁。
(7)FileWriter 是字符类型的文件输出流。
(8)File,获取文件或者目录对象
(9)PrintWriter是字符类型的打印输出,用来装饰其他输出流,能为其他的输出流添加功能。

五、字节转换为字符流的框架图



从上图可以看出:
(1)FileReader继承于InputStreamReader,而InputStreamReader依赖于InputStream,因为InputStreamReader的构造函数是以InputStream为参数,传人InputStream会在InputStreamReader内部通过转码,将字节转换成字符。
(2)FileWriter继承于OutputStreamWriter,而OutStreamWriter依赖于OutputStream,因为OutputStreamWriter的构造函数是以OutputStream为参数,我们传人OutputStream会在OutputStreamWriter内部通过转码,将字节转换成字符。


JAVA IO框架 IO简介 数据流是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。 流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此,Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。 Java.io包中最重要的就是5个类和一个接口。 5个类指的是File、OutputStream、InputStream、Writer、R 阅读详情

相关推荐

Java IO框架图解与操作指南

Java的输入输出(IO)框架是任何从事Java开发的工程师都必须掌握的基础知识。在这一章中,我们将提供Java IO框架的概览,为其后的深入分析和实际应用打好基础。字符流(Character Streams)在Java中用于处理文本数据,其主要特点是以字符为单位进行I/O操作。与字节流不同,字符流使用的是Reader和Writer这两个抽象类以及它们的子类,它们将数据以16位Unicode字符形式进行读写。字符流的使用为处理文本数据提供了便利,因为大多数文本数据都是以字符形式存在,而不是字节。

weixin_35949153的博客 1063

常见的Java框架

当涉及到Java框架时,有很多选择。

qq_45506362的博客 7008

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo

本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。

sprite的博客 1270

Java进阶-主流框架总结与详解

本文详细介绍了Java的主流框架,包括Spring、Hibernate、Spring Boot等。通过对每个框架的功能、特点以及在实际开发中的应用进行分析和比较,读者可以更好地了解各框架的适用场景和优劣势。同时,本文还强调了Java框架在提升开发效率、简化开发流程和提高代码质量方面的重要性。对于Java开发者来说,选择合适的框架对项目的成功至关重要,因此本文的内容对他们具有很高的参考价值。

踏雨歌青春,诗酒趁年华 1万+

ICS v9.5 OverbyteIcsWSocket.pas 整体架构分析

核心架构:OverbyteIcsWSocket.pas 是 Internet Component Suite (ICS) 的基础网络组件单元,提供跨平台 Winsock API 封装,支持TCP/UDP 客户端/服务器,DNS 解析和Raw Socket。在 v9.5 中,SSL/TLS 代码已分离至 OverbyteIcsSslBase.pas 等单元,使核心单元更精简,专注于非加密 socket 操作。

sonadorje的专栏 994

基于Python的闲鱼商品价格评估模型:爬虫+价格预测全实现

本文介绍了一个完整的全球气候数据抓取与分析流程,采用轻量化的技术栈(requests+pandas+matplotlib+folium),实现以下核心功能: 全球城市定向抓取:支持自定义城市列表,自动获取经纬度并抓取多源气候数据 双数据源互补:结合OpenWeatherMap API(实时数据)和Climate-Data.org(历史数据) 全维度覆盖:采集气温、降水、湿度等核心指标,并进行自动化清洗转换 丰富可视化:生成热力图、趋势图和统计图表,支持地理定位展示 灵活扩展:模块化设计便于新增城市或扩展数据

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3048

Java - 框架简介

Java技术演进路径与框架对比 摘要:本文系统梳理了Java技术从基础到企业级开发的演进路径:JavaSE→JavaWeb→Spring→SpringMVC→SSM→SpringBoot→SpringCloud。通过对比表格详细分析了各技术/框架的定位、核心功能、应用场景和技术特点。其中,JavaSE是基础核心,JavaEE规范企业级开发,Spring系列框架逐步成为主流,SpringBoot简化配置实现快速开发,SpringCloud提供完整的微服务解决方案。文章还特别介绍了MVC架构思想及SSM框架整合

Hvitur的博客 1万+

Tesseract OCR 字库训练教程:提高识别率进阶版

通过 Tesseract 字库训练,你可以提高 OCR 对特定文本或字体的识别能力。训练过程包括准备训练数据、生成标签文件、运行训练工具,以及将训练结果集成到实际项目中。虽然训练过程需要一些时间和精力,但对于需要高精度文本识别的场景来说,字库训练是非常有效的提升识别率的方法。

小蜗牛的珍贵百宝箱 1870

java框架都有哪些

它是基于 AOP的,也是微服务架构的基础。Spring Boot是一个基于 Spring的轻量级开发框架,它把 Spring MVC中的核心思想和原理通过封装的方式移植到了 Java应用开发中。下面为大家介绍一些比较常见的 java框架: Spring框架是一个应用程序开发框架,它提供了一组工具来简化应用程序开发,通过它可以有效地简化项目的管理和部署。Hibernate: Hibernate是一个基于 Java的可扩展框架,它是基于 AOP模式的,提供了一些标准的 API来加速开发过程。

花生日记 6096

地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax瓶颈到BPU加速的实战解析

本文详细解析了在地瓜派RDK X5开发板上部署YOLOv11n模型时,从性能暴跌到成功优化的全过程。核心在于通过配置`node_info`将模型中的Softmax算子强制在BPU上以int16精度运行,解决了因算子被分配到CPU导致的严重性能瓶颈。实战部署后,模型推理延迟从126ms降至10.8ms,FPS从7.9提升至92.3,实现了显著的性能优化。

beta5的博客 865

【2025年华为秋招(AI)-11月19日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文包含15道单选题和5道多选题,涵盖机器学习、深度学习、概率统计和数值计算等多个领域。单选题涉及Transformer的Softmax层作用、最小二乘法拟合、概率密度计算、注意力机制、反向传播问题、ROC曲线用途、截断误差来源等知识点。多选题考察大模型训练技术、BERT/GPT比较、强化学习对齐方法、CNN常见层以及PCA特性等内容。题目设计注重理论与实践结合,既包含数学推导,又关注前沿技术应用,全面检验读者对机器学习核心概念的理解能力。正确答案均附有详细解析,帮助理解相关技术原理。

m0_73659489的博客 147

java IO流学习总结

https://www.cnblogs.com/hopeyes/p/9736642.html 近期学习了Java的IO流,尝试着总结一下。 java.io 包下的IO流很多: 其中,以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类,所有的输出流都是抽象类Outp...

乔志勇笔记 1万+

C# Modbus协议全解析 万字长文|RTU/TCP/UDP完整实战(寄存器映射+多从站组网+NModbus4工业级代码)

你做C#工业上位机开发,Modbus协议是绕不开的终极核心,没有之一!Modbus是由施耐德在1979年发布的工业级串行通信协议,经过40余年的发展,已经成为工业自动化领域的通用标准协议—— 小到温湿度传感器、智能电表、小型PLC,大到变频器、伺服驱动器、DCS集散控制系统,99%的工业设备都原生支持Modbus协议(RTU/TCP二选一,多数全支持)。很多开发者觉得Modbus「知识点杂、协议分支多、组网难」,本质是只掌握了零散的读写代码,没吃透。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1063

java IO框架分析

jave.io框架 2010-11-10 22:18:34|分类:默认分类|举报|字号订阅 可从IO的类层次,IO框架的设计模式来论述。 总体来说,IO可以分为字节流和字符流,不同在于字符流由字节流包装而来,在IO读入之后经过JVM处理,把字节流转换成字符流。而字符流的字符采用哪种字符编码实现由JVM默认编码决定。而每个流都分输入和输出,所...

weixin_33670713的博客 1349

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java IO及Netty框架学习小结

JavaIO相关知识(BIO、NIO)、Reactor模式、Netty框架学习

go back 834

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java学习笔记——IO流

IO流的作用:读写文件数据。

weixin_44456914的博客 2108

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于t-io框架的学习

tio,t-io

lonelyhiker 4006

Java——IO流(二)-(7/7):补充知识:IO框架(什么是框架、什么是IO框架、Commons-io)

什么是框架 解决某类问题,编写的一套类、接口等,可以理解成一个半成品,大多框架都是第三方研发的。 好处:在框架的基础上开发,可以得到优秀的软件架构,并能提高开发效率。 框架的形式:一般是把类、接口等编译成class形式,再压缩成一个.jar结尾的文件发行出去。 什么是IO框架 封装了Java提供的对文件、数据进行操作的代码,对外提供了更简单的方式来对文件进行操作,对数据进行读写等。

li13437542099的博客 818

Java IO框架

流的分类:按方向:输入流:将存储设备的内容到内存中输出流:将内存的内容到存储设备中按单位:字节流:以字节为单位,可以读取所有数据字符流:以字符为单位,只能读写文本数据按功能:节点流:具有实际传输数据的读写功能过滤流:在节点流的基础之上的增强功能。

Naclarb优快云的博客 1340

Java基础之IO总览

背景 IO在一般业务开发中不常用到,因此也是很久没有对这部分进行一次系统性的总结,最近有时间也是总结一下。 Java IO总览 Java IO这里指的传统IO,NIO会放到其他文章中介绍。在分类之前先了解一些概念。 流 流是一种对数据传递的抽象概念。比如,我们通过输入流读取磁盘上读取数据,就像水流一样连续源源不断流向用户态内存中。但是本质并非如此,至少不像水流那样源源不断,因为用户开发的程序运行在...

houwanfeimark的专栏 205

Java-io框架的认知与对比

IO框架选型与对比摘要 IO框架主要分为编程语言层库(如Java IO/NIO、Apache Commons IO)和分布式存储系统(如MinIO、FastDFS)。语言层库侧重本地文件操作,需注意资源释放;分布式框架则针对不同存储场景:MinIO适合云原生大文件存储,支持S3协议和自动扩展;FastDFS专为海量小文件优化但运维复杂。选型关键点包括性能需求、扩展性及生态兼容性,云原生场景推荐MinIO,传统小文件处理可选FastDFS。 (150字)

hhua0123的专栏 1094

Java的IO框架

v。

2301_79431873的博客 999

java学习之IO框架

IO框架 流 内存与存储设备之间传输数据的通道 流的分类 按方向:输入流(将<存储设备>中的内容读入到<内存>中),输出流与输入流相反 按单位:字节流:以字节为单位,可以读取所有数据;字符流:以字符为单位,只能读写文本数据。 按功能:节点流:具有实际传输数据的读写功能,过滤流:在节点流的基础之上的增强流。 字节流 InputStream:字节输入流,read(),read(byte[ ] b ), read(byte[ ] b,int off ,int len Ou

weixin_42704812的博客 207

Java中IO框架

Selector用于监听多个通道的事件,来通知连接打开,数据到达等操作,一个线程可以监听多个数据通道。),传入file descriptor和事件(readable、writable等)让kernel监测,当其中一个或多个fd数据就绪,就会返回结果,程序再发起真正的I/O操作(resvfrom());的IO状况,也就是说,利用Selector可使一个单独的线程管理多个Channel,其中在Win系统里面Selector默认的是Select函数,Linux默认的是epoll函数。进程发起真正的IO操作。

AlwaysBestSign_X的博客 527

Java IO框架体系深度解析:从四基类到设计模式实践

Java字节流体系通过和两个抽象基类,构建了覆盖文件、网络、内存等多种数据源的统一处理模型。灵活的扩展机制:通过装饰器模式动态添加缓冲、数据转换等功能跨平台兼容性:统一API屏蔽底层系统差异性能可控性:通过缓冲策略和NIO集成优化吞吐量资源管理:始终使用try-with-resources确保流关闭合理缓冲:根据场景选择最佳缓冲区大小异常处理:区分检查型异常(IOException)与程序错误。

DeL的博客 1088
下一篇: Android手机与PC端进行通信
fbuer
博客等级 码龄14年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值