【Java】初识IO流【附导航】

news2024/9/20 16:43:24

文章目录

  • 01 什么是IO
  • 02 数据源
  • 03 什么是流
  • 04 IO流原理
  • ➩ 导航


01 什么是IO

        对于任何程序设计语言而言,输入输出(Input / Output)系统都是非常核心的功能。程序运行需要数据,数据的获取往往需要跟系统外部进行通信,外部系统可能是文件、数据库、其他程序、网络、IO设备等等。外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象、屏蔽外部的差异,从而实现更加便捷的编程。

 

输入( Iuput ) 指:可以从程序外部系统获得数据(读取数据)

例如:
	1.读取硬盘上的文件内容到程序(播放器打开一个视频文件,word打开一个doc文件);
	2.读取网络上某个位置内容到程序(浏览器中输入网址后,打开网址对应的网页内容,下载某个网址的文件)
	3.读取数据库系统的数据到程序
	4.读取某些硬件系统数据到程序(车载电脑读取雷达扫描信息到程序;温控系统等)

输出( Output ) 指:程序输出数据给外部系统从而操作外部系统(写出数据)

例如:
	1.将数据写到硬盘中(编辑完一个word文档保存后,内容写到硬盘保存);
	2.将数据写到数据库系统中(网站注册,就是后台程序向数据库写入一条记录);
	3.将数据写到某些控制系统中(导弹导航系统程序将新的路径输出到飞控子系统,飞控子系统根据数据修正飞行路径)

java.io 包提供了相关的API,实现了对所有外部系统的输入输出操作


02 数据源

        数据源 Data Source ,提供数据的原始媒介。常见的数据源有:数据库、文件、其他程序、内存、网络连接、IO设备;

        数据源分为:源设备、目标设备;

  • 源设备:为程序提供数据,一般对应输入流;
  • 目标设备:程序数据的目的地,一般对应输出流;

在这里插入图片描述


03 什么是流

        流是一个抽象的、动态的概念,是一串连续动态的数据集合。

        对于输入流而言,数据源就像水箱,流(Stream)就像水管中流动的水流,程序就是最终的用户。通过流(Stream)将数据源(Source)中的数据(information)输送到程序(Program)中。

        对于输出流而言,目标数据源就是目的地(dest),通过流将程序中的数据输送到目的数据源中。
在这里插入图片描述


04 IO流原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

字节流为二进制文件,字符流为文本文件

在这里插入图片描述

文件和流的关系可以看作是河流,而文件是河里的鱼

Java中有四大IO抽象类:

        InputStream / OutputStreamReader / Writer 是所有IO流类的抽象类,接下来可以根据导航来详细了解它们的作用以及拓展:

➩ 导航

在这里插入图片描述

➩ Java文件操作【教你用Java运行微信】

➩ Java字节流【FileInputStream / FileOutputStream】

➩ Java字符流【FileReader / FileWriter】

➩ Java节点流和处理流【Buffered】

➩ Java对象处理流【ObjectInputStream/ObjectOutputStream】

➩ Java标准输入输出流 【转换流 和 打印流】
【乱码转换 InputStreamReader&OutputStreamWriter】
【标准输出 System.out: PrintStream & PrintWriter】

➩ Properties类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文复现|Panoptic Deeplab(全景分割PyTorch)

摘要:这是发表于CVPR 2020的一篇论文的复现模型。本文分享自华为云社区《Panoptic Deeplab(全景分割PyTorch)》,作者:HWCloudAI 。 这是发表于CVPR 2020的一篇论文的复现模型,B. Cheng et al, “Panoptic-DeepLab: A Simple, Str…

63. 不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从左上角到…

MySQL主/从-主/主集群安装部署

MySQL集群架构的介绍 我们在使用到MySQL数据库的时候,只是一个单机的数据库服务。在实际的生产环境中,数据量可能会非常庞大,这样单机服务的MySQL在使用的时候,性能会受到影响影响。并且单机服务的MySQL的数据安全性也会受到影响…

数字信号处理-09-串行FIR滤波器MATLAB与FPGA实现

前言 本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的串行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了简单的优化,并进行了仿真验证。 FIR滤波器的FPGA实现步骤 从工程角度分析FIR滤波器的FPGA实现步骤如下&…

Vim简洁教程

Vim简洁教程Vim简介使用方法命令模式输入模式底线命令模式模式转换使用流程Vim键盘图Vim简介 在Linux系统中,Vim是一款自带的文本编辑器,因此Vim常用于Linux系统中。Vim是从 vi 发展出来的,包含代码补全、编译及错误跳转等方便编程的功能&am…

【LeetCode每日一题】——78.子集

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 78.子集 四【题目描述】 给你一个整数数组 nums &…

亚太C题详细版思路修改版(精)

今年的亚太A、B题的感觉难度不低,其难度已经可以与电工妈杯这种比赛的赛题难度相提并论了。因此,这次预计选C题的人数可能不少,这对于大家来说也是个好消息。塞翁失马焉知非福,难对于大家来说都难,只要自己放平心态&am…

计算机组成原理习题课第一章-1(唐朔飞)

计算机组成原理习题课第一章-1(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?

导语 Hello,大家好呀!我是木木子吖~ 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ (哇哇哇 这真的爱😍😍) 所有文章完整的素材源码都在&#…

Android中JVM七大垃圾收集器【解析】

概述 GC垃圾收集器的种类 新生代:年轻代用来存放最近创建的对象老年代:主要存放应用程序中生命周期长的内存对象永久代:内存的永久保存区域(类和元数据),GC不参与回收Serial收集器:串行收集器…

web网页设计—— 中国餐饮协会(HTML+CSS)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

CentOS8使用阿里云yum源异常问题及解决方法

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 Linux安装git时发生如下错误 [rootraoyuuuu maven]# dnf install git Repository extras is listed more than once in the configuration Repository epel is listed more than once in the configuration CentOS-8 - B…

关于windows的文件监控管理系统(Java)

目 录 摘 要 I Abstract II 1.绪论 1 1.1课题背景 1 1.2系统开发的目的和意义 2 1.3国内外概况 3 1.4研究主要内容 3 2.windows文件监控管理系统相关技术介绍 4 2.1 API 4 2.2 API HOOK 5 2.3 Java 5 2.4 DLL 6 2.4 Windows系统的Socket编程 6 2.4.1使用WinSock API 6 2.4.2 使…

【 C++ 】IO流

目录 1、C语言的输入输出 2、流是什么 3、CIO流 3.1、C标准IO流 3.2、C文件IO流 文件操作步骤 以二进制的形式操作文件 以文本的形式操作文件 4、stringstream的介绍 1、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a…

[前端基础] JavaScript 基础篇(下)

DOM 和 BOM DOM 指的是文档对象模型,它指的是把文档当做一个对象来对待,这个对象主要定义了处理网页内容的方法和接口。BOM 指的是浏览器对象模型,它指的是把浏览器当做一个对象来对待,这个对象主要定义了与浏览器进行交互的法和…

Node核心模块之Stream

Node.js诞生之初就是为了提高IO性能,文件操作系统和网络模块实现了流接口,Node.js中流就是处理流式数据的抽象接口。 那么应用程序为什么使用流来处理数据? 常见问题 同步读取资源文件,用户需要等待数据读取完成资源文件最终一次…

【Windows】windows10时间显示秒数

一般情况下windows10的电脑时间只显示小时和分钟,但是有的用户想要时间显示更加精细,那么windows10时间怎么显示秒呢?大家可以通过修改注册表的方式进行设置:打开注册表编辑器,定位到Advanced,右键新建DWOR…

【第十四篇】Camunda系列-多人会签【多实例】

多人会签 Multiple Instance 也叫多实例任务。 1.会签说明 多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。 多实例是一个有额外属性…

注解(Annotation)

注解 注解也被称为元数据(MateDate),用于修饰或解释包,类,方法,属性,构造器,局部变量等数据信息和注释一样,注解不会影响程序逻辑,但是注解可以被编译或者运行&#xff…

如何定义需求优先级?

本文将围绕以下问题展开:1、什么是需求优先级排序,目的是什么?2、优先级排序的8大依据;3、需求优先级排序面临的挑战;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序,目的是什么?…