Java I/O系统

                                              **Java I/O系统**
           
           **Java I/O系统概述**
我们知道,一个Java程序可以从控制台接收数据,并输出到控制台中。数据保存在内存中的对象里,一旦Java程序运行完毕后,对象就会在内存中消失,对象所包含的数据也就消失了。那么,有没有什么方法可以将内存中的数据保存下来,以便下次运行程序的时候可以使用?此外,除了通过控制台设备接收和输出数据外,我们能不能从其它设备接收数据,并将数据保存或输出到其它设备呢?
Java类库提供了大量类,可以帮助我们从不同的设备读取数据,并保存或输出到不同的设备中。这些类统一放在java.io包和java.nio包中,统称Java I/O系统。这里,I是英文单词Input的缩写,中文含义为输入;O是英文单词Output的缩写,中文含义为输出。
如果我们查看JDK说明文档java.io包,会发现Java I/O系统是相当庞大的,要完全掌握这些类并非易事。然而,如果我们在学习I/O系统时,掌握I/O系统设计的一些规律,就能很快掌握这些类的用法。
要深入学习Java I/O系统,首先必须理解流(Stream)的概念。
那么,什么是流呢?流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源设备的流,这个数据源设备可以是文件、内存或网络连接。
类似的,当程序需要写入数据的时候,就会开启一个通向目的地设备的流。这时候我们就可以想象数据好像在这其中“流”动一样。这个概念和自然界中的水流、气流类似
流是Java I/O的基础,是Java语言对I/O的一个最基本的抽象。之所有采用流作为I/O最基本的抽象,是因为流有两个最基本的特性:一是它含有流质,而是它有方向。在计算机中,流质就是数据,方向就是读或写。
对流的读或写就是针对设备进行信息的输入或输出。我们可以将流理解为传送数据的管道。管道的一段是固定的,就是系统的内存;管道的另一端连的是不同的设备。当管道所连是输入设备时,可以通过这个管道将输入设备所得到的数据读取到内存的变量中。同样,如果管道所连的是输出设备,可以通过它将内存变量中的数据输出到输出设备中。
流使得输入输出的方式变得统一,Java I/O类库基于流的思想来构建,并提供了各类流和创建流的机制来完成对不同设备的读写。

       **流的分类**
对于Java I/O类库对应的java.io包,我们可以将它看成是存放各种类型流的仓库。根据流中的流质和流向的不同,io包中的流被分为许多类型。以下我们讲解流的分类规则。
1)输入流和输出流
流按照数据流的方向分,可以分为两种类型,分别是:
输入流。从数据源读取数据到程序中。只能从中读取数据,而不能向其写入数据。io包中的输入流都继承自抽象类InputStream或Reader。
输出流。将数据从程序写入数据目的地。只能从中写入数据,而不能从中读取数据。io包中的输出流都继承自抽象类OutputStream或Writer。
在I/O库中的每个输入流都可以找到对应的输出流。
2)字节流和字符流
流按照处理数据的最小单位的不同,可以分为两种类型,分别是:
字节流。字节流是以byte为最小单位进行数据传送。io包中的字节流都继承自抽象类InputStream或OutputStream。
字符流。字符流是以char为最小单位进行数据传送。io包中的字符流都继承自抽象类Reader或者Writer。
I/O库做出这种区分是为了满足处理文字型数据的需要。我们知道byte是8位的,char是16位的。在Java中,各种语言的文字都以Unicode形式编码,Unicode编码是基于16位的char,所以在读写文字型的数据时通过字符流会更有效率、更方便。而一些二进制数据的读写,比如图像、声音等,则仍必须通过字节流来完成。
字节流的类名以InputStream或OutputStream结尾,字符流的类名以Reader或Writer结尾。字节流对应的内存变量类型是byte[],字符流对应的内存变量类型是char[]。
3)节点流和处理流
流按照流的功能分,可以分为两种类型,分别是:
节点流。节点流是可以直接从/向一个特定的数据源(例如磁盘文件、内存、网络)读/写数据的流。节点流也称低级流。例如所有从InputStream或Reader派生的类都有一个基本的read()方法,用于读取单一的字节或者字节数组;而对所有从OutputStream或Writer派生的类都有一个基本的write()方法,用于写入单一的字节或者整个字节数组。但在实际应用中,一般很少使用单一的流类来产生输入输出流,而是使用这两个方法给其他的流类提供数据,通过多个流对象的连接和封装使用实际的流。
处理流。处理流不直接连接到设备,而是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更强大的读写功能。处理流也称高级流。
如果我们对照流的这些分类方法,研究Java I/O类,我们会发现:I/O库中的这些类,呈现出一种对称性。这种对称体现在两个方面:一是输入流和输出流的对称,二是字节流和字符流的对称。以上的对称性将I/O库分为4个区间。各个区间内分布的流都是平行的相互对应的,同一区间的流对应的I/O类都有相同的后缀。

在这里插入图片描述

在I/O类库中,流名称的后缀表明了它的类别,流名称的前缀一般和它要处理的对象或设备有关。在每个具体的区间中,管道又可以根据节点流和处理流进一步分类。例如,BufferedInputStream类,前缀为Buffered,表明它要处理的是内存缓冲区中的数据,后缀为InputStream,表明它是一个字节流和输入流。如果查看它的构造器,我们会发现它的构造器带一个InputStream类型参数&#
学徒Sampson
关注 关注
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java I/O流详解
qq_28791753的博客
03-21 1730
JAVA I/O流详解,字节流,字符流
Java编程思想 第十八章 Java I/O 系统
name_sakura的博客
08-26 324
File类既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。如果它指的是一个文件集,我们就可以对此集合调用list()方法,这个方法会返回一个字符数组。 相对路径: 用.表示当前目录,…表示上级目录。 18.1.1 获取当前目录下文件名并做过滤 list()可以获得目录下的所有文件,list(FilenameFilter filter)可以对目录过滤。 18.1.2 递归获取指定目录下文件集并过滤 18.1.3 目录的检查及创建 File类不仅代表存在的文件或目录。也可以用File对象来创
java之IO系统
weixin_45847691的博客
06-28 138
在了解真正用于流中读写数据的类之前,我们来先认识一下一个实用类 — File. File 可以代表一个特定文件的名字,也可以代表一个目录下的一组文件的名称。如何查看一个目录列表? 1、调用不带参数的list()方法,此方法获得File对象包含的全部列表。 2、若想获得的是有限制的目录列表,则要用到目录过滤器 先知道有这个用法吧,代码解释待更新… 运行结果: java输入与输出流 流的概念: 代表有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。(读写数据的方法,文件和程序之间的一根管道(水管)。)
Java之I\O操作-超详细
玩转Java
10-09 472
I\O流
Java之I/O流(最详细的I/O流总结)
熊凯瑞的博客
05-15 5338
I/O流I/O流1、定义2、分类2.1 字节流和字符流2.2 输入流和输出流2.3 节点流和处理流3、结构4、字节流4.1 定义4.2 说明4.3 字节流概述4.4 InputStream的常用方法4.5 OutputStream的常用方法5、字节流读写文件5.1 说明5.2 注意5.3 字节输入流——相关代码5.4 字节输出流——相关代码6、文件的拷贝6.1 需求6.2 分析6.3 注意6.4 快捷键6.5 相关代码7、字节流的缓冲区7. 相关代码8、字节缓冲流8.1 说明8.2 特点8.3 相关代码8.
Java中I/O模式详解
来日可期的博客
07-09 668
一、计算机的组成 现代计算机是由硬件、操作系统组成,操作系统通过内核与硬件交互。操作系统可以划分为:内核与应用两部分,内核提供进程管理、内存管理、网络等底层功能,封装了与硬件交互的接口,通过系统调用提供给上层应用使用。 二、用户空间与内核空间 由于CPU某些指令比较危险,如果错用会导致系统崩溃,为了保护系统,操作系统将内存空间划分为了两部分: 内核空间(Kernel space ) 用户空间(User space) 当进程运行在内核空间时,它就处于内核态;当进程运行在用户空间时,它就处于用户态。 其实
计算机组成原理(七)——I/O系统
FiOQA的博客
08-04 2873
文章目录1. I/O系统基本概念2. 外部设备2.1 输入设备:键盘、鼠标2.2 输出设备:显示器、打印机2.3 外存储器:硬盘存储器、磁盘阵列3. I/O接口(I/O控制器)3.1 I/O接口的功能和基本结构3.2 I/O端口及其编址4. I/O方式4.1 程序查询方式4.2 程序中断方式 1. I/O系统基本概念 2. 外部设备 2.1 输入设备:键盘、鼠标 2.2 输出设备:显示器、打印机 2.3 外存储器:硬盘存储器、磁盘阵列 3. I/O接口(I/O控制器) 3.1 I/O接口的功能和基本结构
探索Java I/O 模型的演进
08-25
什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O ...而后再引出 Java 的 I/O 模型的演进过程,并用实例说明如何选择合适的 Java I/O 模型来提高系统的并发量和可用性。,需要的朋友可以参考下
Java I/O深入学习之File和RandomAccessFile
08-25
主要介绍了Java I/O深入学习之File和RandomAccessFile, I/O系统即输入/输出系统,对于一门程序语言来说,创建一个好的输入/输出系统并非易事。在充分理解Java I/O系统以便正确地运用之前,我们需要学习相当数量的...
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O
12-26
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
Java I/O底层是如何工作的?
12-22
本博文主要讨论I/O在底层是如何工作的。本文服务的读者,迫切希望了解Java I/O操作是在机器层面如何进行映射,以及应用运行时硬件都做了什么。...通常,进程执行操作系统的I/O请求包括数据从缓冲区排
海尔智能电视刷机数据 U49A5 机编DH1W80A0305 务必确认机编一致 强制刷机 整机USB升级主程序
03-27
务必确认机身编号与文件名机编一致,如不一致,请勿下载 机身编号一般在机子背面的贴纸上 升级方法: 1、下载数据,压缩包解压,将“Haier638Upgrade.bin”文件拷贝到U盘根目录下(U盘要求使用FAT32格式,建议4G-8G的品牌U盘,刷机成功率会高) 2、电视关机拔下电源,插入U盘,按住机身按键板上的“菜单”键不放,插电开机,直到LED灯开始闪表示升级正在进行,升级成功后机器会自动重起。 3、重启之后,重新交流上电,升级完成。 注意: 1、升级到结束,大约需要8-30分钟,中途绝对不能断电 2、升级重启第一次进入系统,请等完全正常进入开机桌面之后,才能拨下U盘
c语言c++项目源代码_c语言对自己电脑系统测试.rar
03-27
**C语言电脑系统测试项目** 本项目是一个基于C语言的实用工具,旨在为您的电脑系统提供全面的性能测试与评估。通过执行一系列精心设计的测试用例,该工具能够评估您的电脑在处理器速度、内存管理、磁盘性能以及网络连接等方面的表现。 项目的核心功能包括: 1. **处理器性能测试**:通过执行复杂的算法和计算任务,评估处理器的运算速度和效率。 2. **内存测试**:检查内存分配、读写速度和稳定性,确保系统的内存管理达到最佳状态。 3. **磁盘性能测试**:评估硬盘或固态硬盘的读写速度、I/O性能和文件系统效率。 4. **网络性能测试**:测量网络连接的速度和稳定性,包括上传和下载速度以及延迟。 此外,该项目还提供了详细的测试报告功能,帮助您全面了解系统的优势和潜在瓶颈。测试结果以直观易懂的图表和数字形式呈现,便于分析和解读。 此项目采用模块化设计,方便您进行二次开发和定制,以满足特定需求。无论是硬件评测爱好者还是系统管理员,都能从该项目中受益良多。
pypy3.8-v7.3.6rc3-s390x.tar.bz2
03-27
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
强化学习的Q-Learn算法ppt资源
最新发布
03-27
强化学习的主要算法:包括Q-learning、SARSA、DQN、A3C、TRPO、PPO和SAC等。这些算法各有特点,适用于不同的场景和任务。例如,Q-learning和SARSA是基于值函数的强化学习算法,旨在学习最优策略以最大化累积奖励;而DQN则是深度强化学习算法,使用神经网络来估计值函数,并通过反向传播算法更新网络参数。 强化学习在多个领域具有广泛应用。在自动驾驶系统中,强化学习可以帮助车辆感知周围环境并做出决策,实现自主行驶。在医疗领域,强化学习可以用于辅助医生进行病例分析、诊断和治疗方案制定,提高医疗服务的准确性和效率。此外,强化学习还在智能物流和仓储管理、金融投资决策等领域发挥着重要作用。
工作汇报 年终总结28.pptx
03-27
封面 标题:基于物联网的智能家居系统年度总结 报告人信息:[姓名]、[职位/角色]、[所属机构/公司] 日期:[具体日期] 目录 引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果
tensorflow-2.6.2-cp36-cp36m-manylinux2010-x86-64.whl
03-27
numpy安装
weblogic启动报错:Unable to load performance pack. Using Java I/O instead. Please ensure that libmuxer library is in
06-06
这个错误提示表明 Weblogic 在启动时无法加载性能包,而是使用了 Java I/O。这通常是由于缺少 libmuxer 库文件引起的。要解决这个问题,需要确保 libmuxer 库文件已经正确安装并且在 Weblogic 的类路径中。你可以按照以下步骤进行处理: 1. 检查 libmuxer 库文件是否存在于系统中,并确定其路径。 2. 在 Weblogic 的启动脚本中添加 libmuxer 库文件路径到 JVM 参数中。例如: ``` -Djava.library.path=/path/to/libmuxer ``` 3. 重新启动 Weblogic,查看问题是否已经解决。 希望这些对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Java网络编程 7072
  • Java XML解析技术 2149
  • 类、对象与包 1164
  • 多态与抽象 852
  • 异常处理 656

最新评论

  • 反射与JVM

    深沉的夜: 这波解释满分,谢谢up解疑

  • Java I/O系统

    迷迭香迷魂香: 内容能重新排一下版就更好了

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Java XML解析技术
  • Java网络编程
  • JDBC
2018年24篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

代做工资流水公司镇江银行流水账单代开湛江制作个人流水湛江做企业银行流水青岛企业流水打印查询常州收入证明办理信阳贷款银行流水多少钱徐州流水单多少钱揭阳制作流水单漳州入职工资流水代做西宁银行流水账打印厦门银行流水电子版打印福州做公司流水温州工资流水单查询台州办理工资流水账单湘潭打印企业对公流水吉林代办公司流水潮州车贷工资流水 制作三亚个人流水图片合肥日常消费流水公司商丘查询薪资银行流水商丘做消费贷流水武汉办理工资流水潮州车贷工资流水 代做湛江流水查询咸阳查询签证流水海口在职证明代做揭阳企业对私流水办理昆明银行对公流水价格德阳转账银行流水代办南昌转账银行流水多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化