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

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 218

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

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

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

告别专业软件!用QGIS+GDAL免费搞定S-57电子海图,附全套符号库和样式文件

本文详细介绍了如何利用免费开源工具QGIS和GDAL处理S-57电子海图,包括数据转换、符号库配置和专业可视化方案。通过实战指南,用户无需依赖昂贵的商业软件,即可实现从S-57到SHP的转换及专业级海图制作,特别适合预算有限的个人和小型机构。

weixin_33701294的博客 391

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

Java - 框架简介

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

Hvitur的博客 1万+

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 557

java框架都有哪些

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

花生日记 6096

(8-5)图像特征提取:基于LoG、DoG 和DoH 的斑点检测器

然后,根据给定的参数(标准差、尺度因子),通过调用cv2.GaussianBlur函数创建了两个不同尺度的高斯滤波器,并对图像进行滤波操作。然后,通过遍历DoG滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。然后,通过遍历DoH滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。接下来,通过遍历滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。DoH是一种基于Hessian矩阵的特征检测方法,通过计算Hessian矩阵的行列式来检测图像中的斑点。:实现DoH斑点检测器。

码农三叔 1606

【FastDDS】Layer DDS之Subscriber ( 09-Accessing received data)

Fast DDS提供了多种接收数据访问方式:通过读取(read)或提取(take)操作获取数据,其中提取会移除数据而读取保留数据。应用程序可通过序列高效借用接收队列内存,但需及时归还。数据处理时需检查SampleInfo的有效性,可通过监听器回调或等待集机制异步获取数据。等待集允许线程专门等待新数据到达,通过条件触发和超时控制实现可靠的数据接收处理。

Ray Home 863

java IO流学习总结

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

乔志勇笔记 1万+

YOLO26中的PPM空间金字塔池化:改良设计与多尺度特征提取教程

在计算机视觉的语义分割任务中,准确理解图像中的上下文信息至关重要。例如,在街景图像中,可能同时存在远处的小汽车和近处的大建筑物,网络需要具备捕获多尺度上下文信息的能力。例如,要正确识别图像中的"船",不仅需要看到船本身的特征,还需要理解周围的水面环境。金字塔的每一层对应不同的池化尺度,从细粒度到粗粒度,形成了多层次的特征表示。PPM(Pyramid Pooling Module)正是为了解决这一问题而提出的模块,它通过构建金字塔形状的池化结构,有效地聚合不同尺度的上下文信息,从而提升语义分割的精度。

LXY_LOVE36的博客 82

java IO框架分析

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

weixin_33670713的博客 1349

uniapp - 微信小程序接入官方人脸识别认证详细流程及示例源码,Uniapp微信小程序项目集成官方提供的人脸识别身份验证插件接口(多种示例:人脸核验、身份证件与人脸是否匹配、是否活体、实名认证等)

uni-app微信小程序人脸识别认证,使用uniapp开发微信小程序的人脸采集功能/人脸识别功能,uniapp vue3微信小程序活体人脸识别,Uni-app微信小程序实名认证,uniApp微信小程序人脸认证,UniApp的微信小程序实名认证与人脸识别系统开发,人脸核身微信小程序uni-app接入流程,wx.startFacialRecognitionVerify,uniapp开发微信小程序-人脸采集功能、微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,人脸检测功能

🏆 前端领域优质创作者 3284

visio安装包

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

Java IO及Netty框架学习小结

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

go back 834

IEM模型,地表粗糙度模拟

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

Java学习笔记——IO流

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

weixin_44456914的博客 2108

VB摄像头监控

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

IDEA的使用指南

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

关于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、付费专栏及课程。

余额充值