IO流

在这里插入图片描述

IO流

流的概念:
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源设备的流,这个数据源设备可以是文件、内存或网络连接。流是含有流质具有方向的抽象管道。
流的特点:
流有两个最基本的特性:一是它含有流质,而是它有方向
对流的读或写就是针对设备进行信息的输入或输出。我们可以将流理解为传送数据的管道。管道的一段是固定的,就是系统的内存;管道的另一端连的是不同的设备。
流的作用:
用于应用程序和内外部进行数据通讯。

流的分类
方向:
输入流inputStream 继承自抽象类InputStream或Reader
输出流outputStream继承自抽象类OutputStream或Writer

流的数据单位:
1.字节流 1个字节 8位二进制数继承自抽象类InputStream或OutputStream。
2.字符流 char字符(2个字节)继承自抽象类Reader或者Writer

流的功能:
低级流(节点流)节点流是可以直接从/向一个特定的数据源(例如磁盘文件、内存、网络)读/写数据的流。
高级流(处理流不直接连接到设备,而是连接在已存在的流(节点流或处理流))

文件类
File既代表文件又代表目录
File.exist()
File.isFile();

低级字节流
无论是什么类型的文件都可以使用字节流。InputStream和OutputStream。
音频、视频图片等文件使用字节流。
文本型文件一般使用字符流。
低级字符流
文本文件,适合使用字符流来读取、写入

高级字节流
缓冲流:BufferedInputStream和BufferedOutputStream利用缓冲区来提高读写数据的效率。
BufferedReader和BufferedWriter类,与BufferedInputStream和BuffedOutputStream类似,可以利用缓冲区来提高读写数据的效率,用来装饰其它的字符流。比BufferedInputStream和BuffedOutputStream更强大的是,这两个类可以整行读写字符。
数据流:DataInputStream和DataOutputStream。与计算机无关,非文件。

对象流
ObjectInputStream/ObjectOutputStream之所以能完成基于对象的读写,是因为Java提供了一套对象序列化机制。序列化机制就是一套向流写入或读取对象数据的自动机制,这套机制将读写的实现封装在对象自身的实现之中。
ObjectInputStream/ObjectOutputStream
使用ObjectOutputStream类将对象拆成字节序列的过程,称为对象序列化;而使用ObjectInputStream类,将字节序列还原成对象的过程,称为对象反序列化。

一、按数据源分类
1)如果数据源是文件,对于字节流,使用FileInputStream和FileOutputStream;对于字符流,使用FileReader和 FileWriter。
2)如果数据源是字节数组byte[],则使用ByteArrayInputStream和ByteArrayOutputStream。
3)如果数据源是字符数组Char[],则使用CharArrayReader和CharArrayWriter。
4)如果数据源是String对象,对于字节流,则使用StringBufferInputStream和StringBufferOuputStream;对于字符流,则使用StringReader和StringWriter。
5)如果数据源是网络数据流,对于字节流,使用InputStream和OutputStream;对于字符流,使用Reader和Writer。
二、按是否格式化输出分:要格式化输出,则使用PrintStream或PrintWriter。
三、按是否要缓冲分,要缓冲的话,对于字节流使用BufferedInputStream和BufferedOutputStream;对于字节流,使用BufferedReader和BufferedWriter。
四、按数据格式分
1)二进制格式(只要不能确定是纯文本的):使用InputStream、OutputStream 及其所有带 Stream结束的子类。
2)纯文本格式(含纯英文与汉字或其他编码方式):使用Reader、Writer 及其所有带 Reader、Writer 的子类。
五、按输入输出分
1)输入:使用Reader、InputStream 类型的子类。
2)输出:使用Writer、OutputStream 类型的子类。
六、特殊需要
1)从Stream到Reader、Writer的转换类:InputStreamReader、OutputStreamWriter。
2)对象输入输出:ObjectInputStream、ObjectOutputStream。
3)线程间通信:PipeInputStream、PipeOutputStream、PipeReader、PipeWriter。
4)合并输入:SequenceInputStream。
5)更特殊的需要:PushbackInputStream、PushbackReader、LineNumberInputStream、LineNumberReader。

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值